mirror of
https://github.com/gryf/wmaker.git
synced 2026-07-12 16:56:30 +02:00
Compare commits
561 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 82ab2d2d06 | |||
| bbf24d1d39 | |||
| 224cb403a7 | |||
| 1cd8fea423 | |||
| a98680cd14 | |||
| 7d423a3a0f | |||
| 033d2d9a6f | |||
| 6e2075f3df | |||
| 5d2fd7bf7e | |||
| f6742662ec | |||
| 583f66ec4e | |||
| cd23e77fd1 | |||
| 230a501d36 | |||
| 3022edd060 | |||
| 1713a88656 | |||
| 00a25db9ea | |||
| c678580621 | |||
| 44bc9cc264 | |||
| dfa92906c0 | |||
| 27dc5efd2e | |||
| 86659be668 | |||
| e314f10909 | |||
| 54a24ab6f7 | |||
| a17d131da3 | |||
| 6320bb6219 | |||
| f9bc310fa6 | |||
| 58249c2b9b | |||
| bb716a4ca1 | |||
| 91f8e21668 | |||
| 5f18f60fd2 | |||
| a215869067 | |||
| 909deea70c | |||
| 984a992d0e | |||
| e82d86813e | |||
| d9bc96e497 | |||
| a7baed6cf7 | |||
| a12f0d453a | |||
| 41193bdacd | |||
| a7f8e990db | |||
| b59273f199 | |||
| be922384ac | |||
| 31f16b65a3 | |||
| 3665410377 | |||
| 4477ae4da4 | |||
| 9330a021e5 | |||
| 41ab926090 | |||
| b32ccee5cb | |||
| 6734646265 | |||
| 6a044fe5ae | |||
| 6dd1498f7c | |||
| 090b761fde | |||
| 49db946aa2 | |||
| a2cc89dd3d | |||
| de09ac5dad | |||
| 3dce639aae | |||
| 00dffbe317 | |||
| 7759d06851 | |||
| bf644338e4 | |||
| 95561fba08 | |||
| a0b223263e | |||
| 2555413838 | |||
| 3e3f06a7be | |||
| 1f80c82091 | |||
| fb5f6c30c0 | |||
| 972d85610a | |||
| f0f95165e4 | |||
| f895b906a4 | |||
| 5ab9b7c6be | |||
| 1e490f8233 | |||
| ba3df2599d | |||
| c803218ed1 | |||
| 6c6853ea30 | |||
| b48b503eb1 | |||
| 1c8b680e3d | |||
| 5eeaf6b890 | |||
| f9236c8d20 | |||
| 26bb94a8e7 | |||
| b185d46286 | |||
| 8f29bdc690 | |||
| e2cfed3377 | |||
| 4665972175 | |||
| 8606ae9a83 | |||
| 070f0ad8f4 | |||
| 2913ac0f09 | |||
| dae63b5e96 | |||
| 738a78b3e2 | |||
| 1dace5699f | |||
| 5a95631091 | |||
| 2427200c3e | |||
| d6c1ac3ecf | |||
| 9b5eaa3d3e | |||
| 2beb5f2c52 | |||
| f1809a7786 | |||
| 8b919b0d33 | |||
| d13b78bdde | |||
| 6668715402 | |||
| 100745d356 | |||
| 7c89ca2551 | |||
| 0c737bc834 | |||
| b3f8d0997b | |||
| 673ea18020 | |||
| c89ec25c80 | |||
| 569fbff07c | |||
| 36879de261 | |||
| bfd88e07e6 | |||
| 81b89f6a4c | |||
| 6cfc71d40a | |||
| ccc676a2bf | |||
| 2dbd778ed4 | |||
| f63635dd17 | |||
| 97702618de | |||
| b68a1994c2 | |||
| fe459fbab3 | |||
| 5f2dac318c | |||
| bfda22ef1a | |||
| 46daa76f77 | |||
| 02cc702029 | |||
| 6f195b18fc | |||
| 101ef6f28e | |||
| 5a5595f76c | |||
| 1a5abe9d84 | |||
| d364afff02 | |||
| 273d17a0be | |||
| d6f754e747 | |||
| b07075aed3 | |||
| ad4545b1d8 | |||
| ee36395ddf | |||
| ff865c31f0 | |||
| adc1687f98 | |||
| ac0690b324 | |||
| c261f8ec35 | |||
| e037ae3684 | |||
| 83f0b764e6 | |||
| 3140c09240 | |||
| 8fba9945e0 | |||
| 30cd22859a | |||
| e13cfcd093 | |||
| c2a03a3de5 | |||
| db6b50e6c1 | |||
| fa8121ee61 | |||
| f6320d4fa5 | |||
| cea5f6107c | |||
| 5d643a67dd | |||
| 9087222d1e | |||
| dede386b3d | |||
| b2b2ebad4c | |||
| d4a0b2f115 | |||
| 2411298ff6 | |||
| cdaa7a4520 | |||
| 7df224440b | |||
| 01ad3ead5d | |||
| 6fa1c0c009 | |||
| ac92f1a844 | |||
| 21d3fadebb | |||
| 3986629590 | |||
| c052addd1d | |||
| 6e4698fe11 | |||
| 3617e4c20c | |||
| f3fdf0b8dd | |||
| 9328ba5b3c | |||
| c9fbcda0b0 | |||
| eadb7f3ab2 | |||
| 9e7987713f | |||
| 62d62eebf1 | |||
| 160f879cce | |||
| 28da4c98e3 | |||
| 17a47af160 | |||
| 014a315f3a | |||
| e2f8525728 | |||
| 002d415d02 | |||
| 92bc458fac | |||
| 6f3dbfeaba | |||
| 3426f8110b | |||
| f9b2cf9747 | |||
| ad590811f6 | |||
| d48a37060c | |||
| 23417d9934 | |||
| 5561199c87 | |||
| 6429847494 | |||
| b7a1528833 | |||
| 2ea6162629 | |||
| 5a730d63b2 | |||
| fd31b29d0d | |||
| ebf2801f4a | |||
| 8b46f16205 | |||
| 2da2045efa | |||
| 67e9e7e554 | |||
| 4f18b3e1f4 | |||
| cb1760dc0b | |||
| 9f7e51e66d | |||
| bf6f81434b | |||
| af892d7dd6 | |||
| 7fa14a0137 | |||
| 51d36afc8f | |||
| 84727563f9 | |||
| c7c0b43629 | |||
| ac33bb9d1b | |||
| 563cda28d3 | |||
| 65802d3402 | |||
| 9de5a27dbc | |||
| 42e4069541 | |||
| e5632a9120 | |||
| c3ad2513a9 | |||
| 7277787110 | |||
| 2f33b3c2bc | |||
| fd19456d66 | |||
| 688c2277d7 | |||
| 755ce07d76 | |||
| fc6ed78654 | |||
| c11b08d42b | |||
| f7e1f5d5f4 | |||
| 4660e5b1eb | |||
| f58cf6a8cd | |||
| 15ae70b159 | |||
| 88393f4a6c | |||
| 1f74d4698c | |||
| 97189ce2cc | |||
| 2fec5f9f28 | |||
| 7a2eb68aa4 | |||
| 8a822004ee | |||
| 54db8d6c43 | |||
| e11800652e | |||
| b2c5078987 | |||
| 9c4b19d8aa | |||
| b281587397 | |||
| 7e42fedcbb | |||
| c84e787a24 | |||
| 2db044993b | |||
| 49e94f9747 | |||
| 16e92d89aa | |||
| fc437783f9 | |||
| fee129b181 | |||
| e545b2abf9 | |||
| b6f48ee9b8 | |||
| cc23912efc | |||
| d9ea6f0e25 | |||
| fa821810cf | |||
| 443a08ea16 | |||
| 791fdd1eff | |||
| e666cfc6a5 | |||
| ae7e228aa4 | |||
| 0dfb42caae | |||
| 6691a653a7 | |||
| 325dc85891 | |||
| eb1c06d704 | |||
| 177c5095e9 | |||
| ae9cb306ef | |||
| 35068ba2d2 | |||
| 1c191f0e66 | |||
| b35cc42205 | |||
| 73420b3d2d | |||
| 280615f8a1 | |||
| 1b1cb99e36 | |||
| 08b27e5edd | |||
| 9bd400db67 | |||
| c68431c612 | |||
| 5714dce424 | |||
| b295a2029e | |||
| 67da339ccb | |||
| 945f4d2389 | |||
| b64d9e6be0 | |||
| 9ab2203456 | |||
| d28edde23e | |||
| 79a95d7173 | |||
| 1df08cc492 | |||
| bae28b2fae | |||
| d6d165c29d | |||
| 0a009143c3 | |||
| 8088dc1eab | |||
| 4d0585ede2 | |||
| 81e51182e5 | |||
| 42acb5d34c | |||
| 6aad540b88 | |||
| ea2b5f0641 | |||
| 28b0169147 | |||
| fa5f8d9937 | |||
| ea42641033 | |||
| 5ecb96cbf4 | |||
| 14d1d3f141 | |||
| 976083f5b9 | |||
| 997b3e5d91 | |||
| fd1dd9c7ea | |||
| a8f6abc9ea | |||
| 8276ff1331 | |||
| 1a068faa49 | |||
| c3ba9aeba3 | |||
| 5881d1a8ba | |||
| bed5ebea89 | |||
| edc12fad9f | |||
| af2aba6f95 | |||
| 784f6794e5 | |||
| 8fa16bef00 | |||
| 1c1909d5fe | |||
| e14fad1162 | |||
| 0bab67f9be | |||
| 6ef010d974 | |||
| 9d9b6d3fcf | |||
| ba3e575971 | |||
| 3d6da4b210 | |||
| f2f1bcb209 | |||
| 495e82fc9a | |||
| ea39621f91 | |||
| e03088ebe2 | |||
| bc4f3352b6 | |||
| c8ea949b1a | |||
| 6ef343ed87 | |||
| 032f6587d9 | |||
| a93570e5be | |||
| d72e6d415a | |||
| 04404bf47c | |||
| ae07899122 | |||
| 15db368291 | |||
| ba8cd2abe4 | |||
| 8d09af51b8 | |||
| 2086eefb7e | |||
| 842e145e0a | |||
| b4cf94aacd | |||
| 2ebfcd9c5c | |||
| 1cef020eb3 | |||
| 30fe0fb05f | |||
| d1c9f791d8 | |||
| 0c09d1f40d | |||
| 1ba9a8bcf5 | |||
| cfba824ed4 | |||
| 5cb1df5e27 | |||
| b3ec1ac8f4 | |||
| 22e62c0637 | |||
| 04de317dde | |||
| 438accb312 | |||
| 355a2e6906 | |||
| c743c4b77b | |||
| f6c9410ee7 | |||
| 709a6dc203 | |||
| d3414d335f | |||
| 6749e38693 | |||
| b6270f5a92 | |||
| 794a8f408a | |||
| 324e338087 | |||
| efdb29762d | |||
| 0277a99d08 | |||
| d309aa65d4 | |||
| 2bf380cd27 | |||
| 5293a5ae41 | |||
| d9996e6e93 | |||
| a9a0d2ac85 | |||
| 2429d5e196 | |||
| 58854cab9b | |||
| 740c812476 | |||
| 56acd42e43 | |||
| d42960ad35 | |||
| bdeb635194 | |||
| d543decee6 | |||
| f222a319b1 | |||
| bf6bc120a5 | |||
| 1b0b2d7b1b | |||
| bd49dbc2f5 | |||
| b944a4beb2 | |||
| 2cfb2b5276 | |||
| 80e00c3521 | |||
| 6efbb812b0 | |||
| bb544439f4 | |||
| c72f013136 | |||
| d6abbafeef | |||
| 609b3c29a6 | |||
| 6000af3828 | |||
| b266808331 | |||
| 3d2948e1a0 | |||
| d458304610 | |||
| d12b647069 | |||
| 796b557c3a | |||
| c7843e3f3b | |||
| 85a3fb13cc | |||
| 78690de103 | |||
| 2c6c7d51c9 | |||
| f956609a43 | |||
| 200b0d4098 | |||
| 99b1e26412 | |||
| 33d711ce6a | |||
| 5c9438115b | |||
| 67b4302ef8 | |||
| 35fe34ac85 | |||
| e78e485fb3 | |||
| 7962bfa612 | |||
| 94136ad29a | |||
| a65536f500 | |||
| a5a23f966e | |||
| e3769a0b09 | |||
| 1dc7dc4309 | |||
| 8abf7762cb | |||
| 3ed8cb6ffa | |||
| 31c00a8749 | |||
| a887b44977 | |||
| d2101b287a | |||
| 6ef4b06cca | |||
| d89b1f5ca3 | |||
| 034edb19e3 | |||
| 9b67b36276 | |||
| e1146e56e0 | |||
| 7d6ecb51f6 | |||
| be1c2a01dc | |||
| c6e323e75d | |||
| 0e884f793a | |||
| f9b14d7824 | |||
| ee617cb291 | |||
| b3c20610e9 | |||
| 1d1c5f77c7 | |||
| b5e89127ca | |||
| 7ce2636f63 | |||
| 10b890e920 | |||
| 4799df5506 | |||
| 723f217355 | |||
| 1d0f02f5ca | |||
| bbd42b3a20 | |||
| ff77b6b2e5 | |||
| 3bf2978e63 | |||
| 59106395c0 | |||
| e09df40f78 | |||
| 4b0838e93a | |||
| 781fd777eb | |||
| 03385c3d78 | |||
| e5efbe0cf2 | |||
| 149f6b0390 | |||
| 30e1fad926 | |||
| 11fe8bd860 | |||
| fa4d50a0ca | |||
| 0c938a3c0c | |||
| be4849448f | |||
| af1bcde13a | |||
| 34d82e5462 | |||
| de00154fa1 | |||
| d9438e65ef | |||
| 4bed8d14d7 | |||
| ad84a2dc8f | |||
| 41745d98d4 | |||
| 519302223c | |||
| ea8f18aff1 | |||
| c10469264d | |||
| 47ac986b53 | |||
| 12babda9e7 | |||
| 80f18f60d2 | |||
| 10371836ed | |||
| a24efec61f | |||
| 6397f3403a | |||
| 8ed6eacd06 | |||
| 54feb499cb | |||
| d83b5de644 | |||
| 3dea732ccb | |||
| 243a1924fa | |||
| 1bd9621709 | |||
| 8b78681a7f | |||
| 7bf2565316 | |||
| 7542451a04 | |||
| aa8ade1ef1 | |||
| 1b00071c26 | |||
| 63733c9133 | |||
| c5d4c27a90 | |||
| b80118fb41 | |||
| 4f050ebab9 | |||
| 88352b7274 | |||
| 3a15750ad5 | |||
| d1e1521a88 | |||
| 8c1f59a40f | |||
| 2b65b0416e | |||
| 2ed24561ff | |||
| 6e8639c47d | |||
| 877c26b467 | |||
| 285a926539 | |||
| 65e5f452ec | |||
| d726eaf617 | |||
| ac3212b001 | |||
| 7013b72dce | |||
| de5ef8c4f1 | |||
| 38463df102 | |||
| e27bab9f36 | |||
| 694e66e30d | |||
| a6d7ac8cb9 | |||
| 421e9f942c | |||
| 39357e4f90 | |||
| e16c6fbf2a | |||
| 38d160cb8c | |||
| 572af55c9f | |||
| 3d9c059591 | |||
| 810796b390 | |||
| 00f3ab0eaa | |||
| 894d3e89bf | |||
| f60f14b7bd | |||
| 0c659c1618 | |||
| 082de93ca0 | |||
| 01fbeab1d4 | |||
| 155e1f1fe1 | |||
| 662b83769a | |||
| 40139e208b | |||
| 7cb948098a | |||
| 33855a7a12 | |||
| 34f35ee534 | |||
| 3846609072 | |||
| 7e40a61d16 | |||
| 14dc8dd415 | |||
| 1b183633e1 | |||
| c3c8a0654c | |||
| 753f44ca83 | |||
| 03a7771c86 | |||
| 60d9fc5bb7 | |||
| 17c3404bef | |||
| 68e550b924 | |||
| 48ce9d046e | |||
| 0acbec36ac | |||
| 4a2e202af8 | |||
| a47f07cfc3 | |||
| fc35dfd277 | |||
| 74dc2d2cc0 | |||
| efe0da4618 | |||
| 8522283d68 | |||
| d02d362295 | |||
| e73c3e84de | |||
| 454c7bec5d | |||
| c0d4c16336 | |||
| 4bb93d3dab | |||
| 6ac27ba842 | |||
| 7d09b2c04f | |||
| 3de5b8fb42 | |||
| ff8fc10a65 | |||
| 484c880fd0 | |||
| 1748a18380 | |||
| 461214d870 | |||
| cb3702559a | |||
| e3dcadde30 | |||
| 1485233292 | |||
| 870a73ff32 | |||
| 65f8cb7a4b | |||
| a307b9f867 | |||
| d3f9c2cd75 | |||
| 4546065276 | |||
| 47ec274760 | |||
| da940a1e4d | |||
| b20a58d592 | |||
| 9937566ec4 | |||
| 81e2b42746 | |||
| 3d7e271d3b | |||
| 4d82f9efde | |||
| 12fa7b2203 | |||
| 38b58112ac | |||
| a8f0b68eaf | |||
| df49061865 | |||
| 5f6f73e178 | |||
| 5b42f6d090 | |||
| 334e2cc5f4 | |||
| 1497bc354b | |||
| 0d0169a413 | |||
| f40095ac9e | |||
| 39f6130a28 | |||
| 36b9f6cb23 | |||
| 7082561a42 | |||
| 10e0bdf39b | |||
| 88d9deea83 | |||
| bec572ea8b | |||
| a392c30b0d | |||
| 0399d70868 | |||
| 09761a75f0 | |||
| 2a3c11e202 | |||
| 118beb2c60 |
+45
-3
@@ -31,6 +31,10 @@ m4/lt~obsolete.m4
|
||||
|
||||
src/wconfig.h
|
||||
|
||||
# These files are generated by scripts
|
||||
INSTALL-WMAKER
|
||||
README.i18n
|
||||
|
||||
# These files are compilation stuff
|
||||
*.lo
|
||||
*.o
|
||||
@@ -58,7 +62,6 @@ util/wmsetup
|
||||
util/wxcopy
|
||||
util/wxpaste
|
||||
|
||||
wrlib/get-wraster-flags
|
||||
wrlib/tests/testdraw
|
||||
wrlib/tests/testgrad
|
||||
wrlib/tests/testrot
|
||||
@@ -74,8 +77,6 @@ WINGs/Tests/testmywidget
|
||||
WINGs/Tests/wmfile
|
||||
WINGs/Tests/wmquery
|
||||
WINGs/Tests/wtest
|
||||
WINGs/get-wings-flags
|
||||
WINGs/get-wutil-flags
|
||||
|
||||
WPrefs.app/WPrefs
|
||||
|
||||
@@ -84,11 +85,52 @@ wrlib/wrlib.pc
|
||||
WINGs/WINGs.pc
|
||||
WINGs/WUtil.pc
|
||||
|
||||
wrlib/libwraster.map
|
||||
|
||||
WindowMaker/appearance.menu
|
||||
WindowMaker/menu
|
||||
WindowMaker/menu.bg
|
||||
WindowMaker/menu.fi
|
||||
WindowMaker/menu.fy
|
||||
WindowMaker/menu.hu
|
||||
WindowMaker/menu.ko
|
||||
WindowMaker/menu.nl
|
||||
WindowMaker/menu.ro
|
||||
WindowMaker/menu.sk
|
||||
WindowMaker/menu.zh_TW
|
||||
WindowMaker/plmenu
|
||||
WindowMaker/plmenu.bg
|
||||
WindowMaker/plmenu.es
|
||||
WindowMaker/plmenu.fi
|
||||
WindowMaker/plmenu.fy
|
||||
WindowMaker/plmenu.ja
|
||||
WindowMaker/plmenu.ko
|
||||
WindowMaker/plmenu.nl
|
||||
WindowMaker/plmenu.pl
|
||||
WindowMaker/plmenu.ro
|
||||
WindowMaker/plmenu.sk
|
||||
WindowMaker/plmenu.zh_CN
|
||||
WindowMaker/plmenu.zh_TW
|
||||
WindowMaker/wmmacros
|
||||
|
||||
|
||||
WindowMaker/Defaults/WMRootMenu
|
||||
WindowMaker/Defaults/WMState
|
||||
WindowMaker/Defaults/WMWindowAttributes
|
||||
WindowMaker/Defaults/WindowMaker
|
||||
WindowMaker/IconSets/Default.iconset
|
||||
|
||||
# These files are generated by the i18n process
|
||||
/po/WindowMaker.pot
|
||||
/po/*.mo
|
||||
/WINGs/po/WINGs.pot
|
||||
/WINGs/po/*.mo
|
||||
/WPrefs.app/po/WPrefs.pot
|
||||
/WPrefs.app/po/*.mo
|
||||
/util/po/*.pot
|
||||
/util/po/*.mo
|
||||
|
||||
# Some text editors generate backup files
|
||||
*~
|
||||
|
||||
.pc
|
||||
|
||||
@@ -4,12 +4,7 @@
|
||||
|
||||
|
||||
If you find a bug please fill this form and send it to
|
||||
wmaker-dev@lists.windowmaker.org Please, USE THIS FORM!!!
|
||||
|
||||
You can also report a bug in the WWW bug tracker at
|
||||
http://bugs.windowmaker.org/projects/wmaker/issues or by sending this report to
|
||||
bugs@windowmaker.org
|
||||
|
||||
wmaker-dev@googlegroups.com Please, USE THIS FORM!!!
|
||||
|
||||
0. Before reporting this bug I already:
|
||||
[ ] read the NEWS, README and INSTALL files
|
||||
|
||||
@@ -60,6 +60,7 @@ Summary of Contents:
|
||||
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?
|
||||
@@ -332,7 +333,7 @@ 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/
|
||||
its 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.
|
||||
|
||||
@@ -345,10 +346,13 @@ 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. To use it with CDE, read the answer for "How do I switch
|
||||
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
|
||||
To use it with KDE, read its 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
|
||||
@@ -724,6 +728,25 @@ 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:
|
||||
-=-=-=-=-=-=-=-
|
||||
@@ -1260,7 +1283,7 @@ WM_NORMAL_HINTS(WM_SIZE_HINTS):
|
||||
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
|
||||
Now, when scilab opens its 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 ;)
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
|
||||
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 available. and you
|
||||
can check if your locale is supported by X's locale emulation.
|
||||
See "/usr/X11R6/lib/X11/locale/locale.alias"
|
||||
|
||||
- Check if you're using 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/X11R6/lib/X11/locale/locale.alias"
|
||||
|
||||
- if your OS doesn't support any locale or if your OS doesn't
|
||||
support a locale for your language, you can use X Window System's
|
||||
locale emulation feature instead of OS's locale. To use this
|
||||
feature, add this option to the configure, "--with-x-locale".
|
||||
if your OS is commercial one, such as Solaris, IRIX, AIX, ...
|
||||
you perhaps don't have to use X's locale emulation.
|
||||
But if your OS is Linux or NetBSD or..., it is possible that
|
||||
your locale is not supported so far. then use "--with-x-locale".
|
||||
|
||||
Note: to use X's locale emulation, your Xlib has to be
|
||||
compiled so that the locale emulation is enabled.
|
||||
Linux RedHat5.0's default Xlib is not compiled
|
||||
like that. (RH4.x are ok). Recompiled Xlib for
|
||||
RH5.0 where you can use locale emulation is available
|
||||
here:
|
||||
ftp://ftp.linux.or.jp/pub/RPM/glibc
|
||||
|
||||
- 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 language (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 you 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.
|
||||
|
||||
|
||||
-437
@@ -1,437 +0,0 @@
|
||||
|
||||
Installation Instructions for Window Maker
|
||||
|
||||
The latest version of Window Maker (-crm) can be found in the
|
||||
git repository at
|
||||
|
||||
http://repo.or.cz/w/wmaker-crm.git
|
||||
|
||||
|
||||
SUPPORTED PLATFORMS
|
||||
===================
|
||||
|
||||
- Intel GNU/Linux Systems in general
|
||||
|
||||
Patches to make it work on other platforms are welcome.
|
||||
|
||||
|
||||
REQUIREMENTS:
|
||||
=============
|
||||
|
||||
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)
|
||||
glibc development files (usually glibc-devel in Linux distributions)
|
||||
X development files (XFree86-devel or something similar)
|
||||
|
||||
- autoconf, automake and libtool
|
||||
autoconf 2.54
|
||||
automake 1.4
|
||||
libtool 1.4.2
|
||||
|
||||
- Xft2
|
||||
and its dependencies (such as freetype2 and fontconfig)
|
||||
You will also need the development files for it (xft2-devel)
|
||||
|
||||
|
||||
OPTIONAL:
|
||||
=========
|
||||
|
||||
These libraries are not required to make Window Maker work, but they
|
||||
are supported in case you want to use them. Version numbers are those
|
||||
that I have (and therefore, guaranteed to work), but other versions
|
||||
might work too.
|
||||
|
||||
|
||||
- libXPM 4.7 or newer
|
||||
Older versions may not work!!!
|
||||
Available at ftp://sunsite.unc.edu/pub/Linux/libs/X/
|
||||
|
||||
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.cdrom.com/pub/png/
|
||||
|
||||
- libtiff 3.4 or newer
|
||||
For TIFF image support.
|
||||
You can get it at ftp://ftp.sgi.com/graphics/tiff
|
||||
|
||||
- libjpeg 6.0.1 or newer
|
||||
For JPEG image support
|
||||
http://www.ijg.org/
|
||||
|
||||
- libgif 2.2 or libungif
|
||||
For GIF image support
|
||||
ftp://prtr-13.ucsc.edu/pub/libungif/
|
||||
|
||||
- GNU xgettext
|
||||
If you want to use translated messages, you will need GNU gettext.
|
||||
Other versions of gettext are not compatible and will not work.
|
||||
Get the GNU version from ftp://ftp.gnu.org
|
||||
|
||||
|
||||
|
||||
CONFIGURE OPTIONS:
|
||||
==================
|
||||
|
||||
If you downloaded the cvs or git versions, type
|
||||
|
||||
./autogen.sh
|
||||
|
||||
to generate the config files.
|
||||
|
||||
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 a list of other options, run ./configure --help
|
||||
|
||||
--with-libs-from
|
||||
specify additional paths for libraries to be searched.
|
||||
The -L flag must precede each path, like:
|
||||
--with-libs-from="-L/opt/libs -L/usr/local/lib"
|
||||
|
||||
--with-incs-from
|
||||
specify additional paths for header files to be searched.
|
||||
The -I flag must precede each paths, like:
|
||||
--with-incs-from="-I/opt/headers -I/usr/local/include"
|
||||
|
||||
--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-motif
|
||||
disable support for mwm window manager hints
|
||||
|
||||
--enable-modelock
|
||||
XKB language status lock support. If you don't know what it is you
|
||||
probably don't need it.
|
||||
|
||||
--disable-xpm
|
||||
disables use of the XPM library even if it is available on your
|
||||
system.
|
||||
|
||||
--disable-png
|
||||
disables use of PNG library
|
||||
|
||||
--disable-tiff
|
||||
disable use of TIFF library
|
||||
|
||||
--disable-gif
|
||||
disable use of GIF library
|
||||
|
||||
--disable-jpeg
|
||||
disable use of JPEG library
|
||||
|
||||
--disable-shape
|
||||
disables shaped windows (for oclock, xeyes etc.)
|
||||
|
||||
|
||||
PLATFORM SPECIFIC NOTES:
|
||||
========================
|
||||
|
||||
- GNU/Linux in general
|
||||
Make sure you have /usr/local/lib in /etc/ld.so.conf and that you
|
||||
run ldconfig after installing.
|
||||
Uninstall any packaged version of Window Maker before installing a new
|
||||
version.
|
||||
|
||||
- RedHat GNU/Linux
|
||||
RedHat systems have several annoying problems. If you use it,
|
||||
be sure to follow the steps below or Window Maker will not work:
|
||||
|
||||
* if you installed the Window Maker that comes with RedHat, uninstall
|
||||
it before upgrading;
|
||||
|
||||
* make sure you don't have the LANG and LINGUAS environment variables
|
||||
set to en_RN;
|
||||
|
||||
* make sure you have /usr/local/bin in your PATH environment
|
||||
variable;
|
||||
|
||||
* 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 wmaker 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 has weird problems with
|
||||
textures, do not use textures in title bars. Or use a different
|
||||
X server.
|
||||
|
||||
INSTALLATION:
|
||||
=============
|
||||
|
||||
Build Window Maker
|
||||
------------------
|
||||
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 and make them
|
||||
smaller, you can instead type:
|
||||
|
||||
make install-strip
|
||||
ldconfig
|
||||
|
||||
This will build and install Window Maker with default parameters.
|
||||
|
||||
If you want to customize some compile-time options, you can do the
|
||||
following.
|
||||
|
||||
1. (optional) Look at the CONFIGURE OPTIONS section above for the
|
||||
options available. Also run:
|
||||
|
||||
./configure --help
|
||||
|
||||
to get a complete listing of other 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 favorite 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 "I don't have the
|
||||
root password :-(" section) and install Window Maker in your system:
|
||||
su root
|
||||
make install
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
|
||||
Installing the extras package
|
||||
-----------------------------
|
||||
|
||||
Unpack WindowMaker-extra-<version-number>.tar.gz in /usr/local/share
|
||||
|
||||
You can get the file at http://windowmaker.org/pub/source/release/. This file
|
||||
is optional and only have a few icons, and themes. Look for the latest
|
||||
<version-number> available. Also there is a WindowMaker-extra.readme to
|
||||
instruct you where that package should go.
|
||||
|
||||
|
||||
|
||||
I don't have the root password :(
|
||||
---------------------------------
|
||||
|
||||
If you can't get superuser privileges (can't be root) you can install
|
||||
wmaker 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 with your actual home
|
||||
directory path.
|
||||
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
== Error with loading fonts, even if they exist.
|
||||
|
||||
Try rebuilding without NLS support.
|
||||
|
||||
== Error when configuring
|
||||
|
||||
ltconfig: unrecognized option `--no-reexec'
|
||||
Try `ltconfig --help' for more information.
|
||||
configure: error: libtool configure failed
|
||||
|
||||
remove the --no-reexec option from aclocal.m4 and reconfigure
|
||||
Also make sure the autoconf and automake versions you have installed are:
|
||||
autoconf 2.13
|
||||
automake 1.4
|
||||
libtool 1.3
|
||||
|
||||
Note that it must not be libtool 1.2b, it must be libtool 1.3,
|
||||
from the GNU sites.
|
||||
|
||||
== 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.
|
||||
|
||||
|
||||
== configure doesn't detect libXpm.
|
||||
|
||||
* Check if you have a symbolic link from libXpm.so.4.9 to libXpm.so
|
||||
|
||||
|
||||
== 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
|
||||
|
||||
== "...: your machine is misconfigured. gethostname() returned (none)"
|
||||
|
||||
* the hostname of your machine is set to something invalid, that starts
|
||||
with a parenthesis. Do a man hostname for info about how to set it.
|
||||
|
||||
|
||||
== The root menu contains only 2 entries. ("XTerm" and "Exit...")
|
||||
|
||||
* Window Maker could not read your menu definition file
|
||||
you should check wmaker's output for an error, it may be
|
||||
visible in the console or in the .xsession-errors file.
|
||||
|
||||
|
||||
== checking lex output file root... configure: error: cannot find output from true; giving up
|
||||
|
||||
* Read the REQUIREMENTS section of this file.
|
||||
|
||||
|
||||
LOCALES/INTERNATIONALIZATION
|
||||
============================
|
||||
|
||||
Window Maker has national language support. To enable national language
|
||||
support, you must compile Window Maker with some additional parameters.
|
||||
|
||||
|
||||
0 - You must have the GNU gettext package installed. It can be
|
||||
obtained at ftp://prep.ai.mit.edu/pub/gnu/gettext-nnn.tar.gz
|
||||
|
||||
Steps 1 to 3 can be skipped if you use the Install script.
|
||||
|
||||
1 - You have to select the languages you want to support. Set the
|
||||
LINGUAS to the list of locales you want. English is always
|
||||
supported. Example:
|
||||
|
||||
setenv LINGUAS "pt ja de"
|
||||
in csh
|
||||
|
||||
or
|
||||
|
||||
export LINGUAS;LINGUAS="pt ja de"
|
||||
in sh
|
||||
|
||||
The list of supported locales can be found in po/README.
|
||||
English is the default language.
|
||||
|
||||
Read po/README if you wish to translate and maintain locale files
|
||||
for other languages.
|
||||
|
||||
2 - Additionally, if your language uses multi-byte characters, such
|
||||
as Japanese or Korean, you must set the MultiByteText option to YES
|
||||
in ~/GNUstep/Defaults/WMGLOBAL
|
||||
|
||||
3 - Configure, build and install Window Maker normally.
|
||||
|
||||
4 - To select a particular locale at run-time you must set the LANG
|
||||
environment variable to the locale you want. For example, if you want to set
|
||||
the Portuguese locale, you must run
|
||||
|
||||
setenv LANG pt
|
||||
|
||||
in csh or
|
||||
|
||||
export LANG; LANG=pt
|
||||
|
||||
in Bourne sh and similar
|
||||
|
||||
Note: If you have the LC_CTYPE environment variable set, you must
|
||||
unset it before running wmaker.
|
||||
|
||||
For menu definition files, Window Maker searches for them in the
|
||||
following order (for Brazilian Portuguese, in this case):
|
||||
|
||||
menu.pt_BR
|
||||
menu.pt
|
||||
menu
|
||||
+74
-14
@@ -12,12 +12,8 @@ config-paths.h: Makefile
|
||||
@echo "Generating $@"
|
||||
@echo '/* this is a generated file - do not edit */' > $@
|
||||
@echo '' >> $@
|
||||
@echo '/* gettext domain used for menu translations */' >> $@
|
||||
@if test -z "$(menutextdomain)"; then \
|
||||
echo '/* #undef MENU_TEXTDOMAIN "$(menutextdomain)" */' >> $@; \
|
||||
else \
|
||||
echo '#define MENU_TEXTDOMAIN "$(menutextdomain)"' >> $@; \
|
||||
fi
|
||||
@echo '/* define where the translations are stored */' >> $@
|
||||
@echo '#define LOCALEDIR "$(localedir)"' >> $@
|
||||
@echo '' >> $@
|
||||
@echo '/* define an extra path for pixmaps */' >> $@
|
||||
@echo '#define PIXMAPDIR "$(pixmapdir)"' >> $@
|
||||
@@ -25,18 +21,34 @@ config-paths.h: Makefile
|
||||
@echo '/* where shared data is stored */' >> $@
|
||||
@echo '#define PKGDATADIR "$(datadir)/WindowMaker"' >> $@
|
||||
@echo '' >> $@
|
||||
@echo '/* where the configuration is stored */' >> $@
|
||||
@echo '#define SYSCONFDIR "$(sysconfdir)"' >> $@
|
||||
@echo '/* where the global defaults are stored */' >> $@
|
||||
@echo '#define DEFSDATADIR "$(defsdatadir)"' >> $@
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
SUBDIRS = wrlib WINGs src util po WindowMaker wmlib WPrefs.app doc test
|
||||
# Improve coverage in 'make distcheck' by checking that translations work
|
||||
AM_DISTCHECK_CONFIGURE_FLAGS = --enable-silent-rules LINGUAS='*'
|
||||
|
||||
EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N INSTALL \
|
||||
INSTALL-WMAKER README.definable-cursor \
|
||||
|
||||
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
|
||||
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:
|
||||
@@ -48,6 +60,54 @@ coverage:
|
||||
-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
|
||||
|
||||
.PHONY: coverage-reset coverage
|
||||
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
|
||||
|
||||
@@ -1,7 +1,343 @@
|
||||
|
||||
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
|
||||
@@ -12,6 +348,33 @@ 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
|
||||
@@ -1280,7 +1643,7 @@ 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
|
||||
soon as the mouse pointer enters its 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.
|
||||
|
||||
@@ -2209,7 +2572,7 @@ The OPEN_MENU command now supports the following syntax:
|
||||
// it in current position
|
||||
OPEN_MENU file.menu
|
||||
2. Pipe menu handling.
|
||||
// opens command and uses it's stdout to construct menu.
|
||||
// opens command and uses its stdout to construct menu.
|
||||
// Command's output must be a valid menu description.
|
||||
OPEN_MENU | command
|
||||
3. Directory handling.
|
||||
@@ -2812,7 +3175,7 @@ when they are first mapped
|
||||
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
|
||||
file in WMState and set its key to Dock. For example, if your WMDock
|
||||
contains:
|
||||
|
||||
{
|
||||
|
||||
@@ -129,8 +129,8 @@ HELP ME!!!
|
||||
==========
|
||||
|
||||
There is a mailing list for discussing Window Maker at
|
||||
wmaker-user@lists.windowmaker.org To subscribe to it, send a message to
|
||||
wmaker-user-subscribe@lists.windowmaker.org
|
||||
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
|
||||
@@ -178,7 +178,7 @@ 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
|
||||
same time. You might get unexpected behavior when Window Maker updates its
|
||||
configuration files.
|
||||
|
||||
If you really desire to do this, try running Window Maker with the command line
|
||||
@@ -201,14 +201,15 @@ while keeping a nice appearance and good functionality, follow the items bellow:
|
||||
- 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 #undefine ANIMATIONS in wconfig.h
|
||||
- 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
|
||||
memory usage, set its value to a value like the number of different icons you
|
||||
use. Also, disable anti-aliased text support in ~/GNUstep/Defaults/WMGLOBAL.
|
||||
|
||||
|
||||
@@ -310,5 +311,5 @@ 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@lists.windowmaker.org
|
||||
to wmaker-dev@googlegroups.com
|
||||
|
||||
|
||||
@@ -32,6 +32,11 @@ 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
|
||||
--------------------------
|
||||
@@ -129,7 +134,7 @@ Sending the patch to the mailing list
|
||||
|
||||
Send your patches to:
|
||||
|
||||
wmaker-dev@lists.windowmaker.org
|
||||
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
|
||||
@@ -142,7 +147,7 @@ you, otherwise you may face the problems below. Doing this is really easy:
|
||||
# (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 <wmaker-dev@lists.windowmaker.org>"
|
||||
git config sendemail.to "Window Maker Devel <wmaker-dev@googlegroups.com>"
|
||||
|
||||
# If you're sending more than 1 patch, you may be interested in having an
|
||||
# introduction mail for the batch:
|
||||
|
||||
@@ -8,7 +8,7 @@ noinst_PROGRAMS = fontl puzzle colorpick
|
||||
|
||||
LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \
|
||||
$(top_builddir)/WINGs/libWUtil.la \
|
||||
@XFTLIBS@ @INTLIBS@
|
||||
@XFTLIBS@ @INTLIBS@ @XLIBS@
|
||||
|
||||
colorpick_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ void showSelectedColor(void *self, void *cdata)
|
||||
{
|
||||
WMColorPanel *panel = (WMColorPanel *) self;
|
||||
|
||||
(void) cdata;
|
||||
printf("Selected Color: %s\n", WMGetColorRGBDescription(WMGetColorPanelColor(panel)));
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <stdint.h>
|
||||
#include <WINGs/WINGs.h>
|
||||
#include <WINGs/WUtil.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
void wAbort()
|
||||
{
|
||||
@@ -35,12 +36,14 @@ void show(WMWidget * self, void *data)
|
||||
void *d;
|
||||
WMLabel *l = (WMLabel *) data;
|
||||
d = WMGetHangedData(self);
|
||||
sprintf(buf, "%i - 0x%x - 0%o", (int)d, (int)d, (int)d);
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -155,6 +155,9 @@ 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++) {
|
||||
|
||||
+6
-25
@@ -3,20 +3,19 @@
|
||||
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@
|
||||
|
||||
bin_SCRIPTS = get-wings-flags get-wutil-flags
|
||||
|
||||
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@
|
||||
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 get-wings-flags.in get-wutil-flags.in
|
||||
EXTRA_DIST = BUGS make-rgb Examples Extras Tests
|
||||
|
||||
|
||||
# wbutton.c
|
||||
@@ -90,14 +89,14 @@ libWUtil_la_SOURCES = \
|
||||
|
||||
AM_CFLAGS =
|
||||
|
||||
AM_CPPFLAGS = -DLOCALEDIR=\"$(NLSDIR)\" -DRESOURCE_PATH=\"$(datadir)/WINGs\" \
|
||||
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) get-wings-flags get-wutil-flags
|
||||
DISTCLEANFILES = $(pkgconfig_DATA)
|
||||
|
||||
WINGs.pc: Makefile
|
||||
@echo "Generating $@"
|
||||
@@ -106,19 +105,9 @@ WINGs.pc: Makefile
|
||||
@echo 'Version: $(VERSION)' >> $@
|
||||
@echo 'Requires: wrlib WUtil' >> $@
|
||||
@echo 'Libs: $(lib_search_path) -lWINGs' >> $@
|
||||
@echo 'Libs.private: $(XFTLIBS) $(XLIBS) -lm $(INTLIBS)' >> $@
|
||||
@echo 'Libs.private: $(XFTLIBS) $(PANGOLIBS) $(XLIBS) -lm $(INTLIBS)' >> $@
|
||||
@echo 'Cflags: $(inc_search_path)' >> $@
|
||||
|
||||
get-wings-flags: get-wings-flags.in Makefile
|
||||
@echo "Generating $@"
|
||||
@$(SED) -e 's#$${inc_search_path}#$(inc_search_path)#;' \
|
||||
-e 's#$${lib_search_path}#$(lib_search_path)#;' \
|
||||
-e 's#$${GFXLIBS}#$(GFXLIBS)#;' \
|
||||
-e 's#$${XFTLIBS}#$(XFTLIBS)#;' \
|
||||
-e 's#$${INTLIBS}#$(INTLIBS)#;' \
|
||||
-e 's#$${XLIBS}#$(XLIBS)#;' < $(abs_srcdir)/get-wings-flags.in > $@
|
||||
@chmod 755 $@
|
||||
|
||||
WUtil.pc: Makefile
|
||||
@echo "Generating $@"
|
||||
@echo 'Name: WUtil' > $@
|
||||
@@ -127,11 +116,3 @@ WUtil.pc: Makefile
|
||||
@echo 'Libs: -L$(libdir) -lWUtil' >> $@
|
||||
@echo 'Libs.private: $(INTLIBS)' >> $@
|
||||
@echo 'Cflags: -I$(includedir)' >> $@
|
||||
|
||||
get-wutil-flags: get-wutil-flags.in Makefile
|
||||
@echo "Generating $@"
|
||||
@$(SED) -e 's#$${includedir}#$(includedir)#;' \
|
||||
-e 's#$${libdir}#$(libdir)#;' \
|
||||
-e 's#$${INTLIBS}#$(INTLIBS)#;' < $(abs_srcdir)/get-wutil-flags.in > $@
|
||||
@chmod 755 $@
|
||||
|
||||
|
||||
+54
-9
@@ -155,6 +155,41 @@ 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
|
||||
@@ -172,14 +207,24 @@ 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 tehnique was implemented for most of the widgets.
|
||||
This flickering effect has gotten more vizible with the introduction
|
||||
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
|
||||
@@ -191,7 +236,7 @@ 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 compelte details).
|
||||
the drawing of items to userspace (read below for the complete details).
|
||||
|
||||
|
||||
*** Mon Oct 14 22:07:42 EEST 2002 - Dan
|
||||
@@ -199,10 +244,10 @@ the drawing of items to userspace (read below for the compelte details).
|
||||
WMList change
|
||||
-------------
|
||||
|
||||
In case of WMList there is the posibility to delegate the drawing of the
|
||||
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 tehnique in this case too (to allow all widgets based on WMList
|
||||
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
|
||||
@@ -231,7 +276,7 @@ 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
|
||||
internat objects instead.
|
||||
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*.
|
||||
@@ -298,7 +343,7 @@ 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 succesfully sent
|
||||
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.
|
||||
|
||||
@@ -307,14 +352,14 @@ 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 ammount of data you need to
|
||||
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 ammount of data you have to send is undetermined and you
|
||||
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()
|
||||
|
||||
+6
-6
@@ -8,25 +8,25 @@
|
||||
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
|
||||
WINGs is a small widget set with the N*XTSTEP look and feel. Its API
|
||||
is inspired in OpenStep and its 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,
|
||||
The library is limited and its 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
|
||||
workaround some of its 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
|
||||
Some of its functions are designed to support the Window Maker window
|
||||
manager (see http://windowmaker.info) In fact, its 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
|
||||
|
||||
+19
-2
@@ -26,7 +26,7 @@
|
||||
#include <WINGs/WUtil.h>
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#define WINGS_H_VERSION 20140612
|
||||
#define WINGS_H_VERSION 20150508
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -127,7 +127,8 @@ typedef enum {
|
||||
WBTRadio = 5,
|
||||
WBTMomentaryChange = 6,
|
||||
WBTOnOff = 7,
|
||||
WBTMomentaryLight = 8
|
||||
WBTMomentaryLight = 8,
|
||||
WBTTriState = 9
|
||||
} WMButtonType;
|
||||
|
||||
/* button behaviour masks */
|
||||
@@ -794,6 +795,8 @@ 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);
|
||||
@@ -930,6 +933,10 @@ 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);
|
||||
@@ -1069,6 +1076,9 @@ 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);
|
||||
@@ -1831,10 +1841,17 @@ WMAlertPanel* WMCreateAlertPanel(WMScreen *app, WMWindow *owner, const char *tit
|
||||
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,
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
|
||||
#ifdef USE_PANGO
|
||||
#include <pango/pango.h>
|
||||
#endif
|
||||
|
||||
#include <WINGs/WINGs.h>
|
||||
|
||||
@@ -265,6 +268,16 @@ typedef struct W_Screen {
|
||||
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
|
||||
@@ -445,6 +458,10 @@ typedef struct W_Font {
|
||||
short y;
|
||||
short refCount;
|
||||
char *name;
|
||||
|
||||
#ifdef USE_PANGO
|
||||
PangoLayout *layout;
|
||||
#endif
|
||||
} W_Font;
|
||||
|
||||
#define W_FONTID(f) (f)->font->fid
|
||||
@@ -565,6 +582,8 @@ struct W_View {
|
||||
void *hangedData; /* data holder for user program */
|
||||
|
||||
WMColor *backColor;
|
||||
WMPixmap *backImage;
|
||||
|
||||
|
||||
Cursor cursor;
|
||||
|
||||
@@ -657,6 +676,8 @@ 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);
|
||||
|
||||
@@ -193,6 +193,16 @@ typedef void WMNotificationObserverAction(void *observerData,
|
||||
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 ]-------------------------------------------------- */
|
||||
|
||||
|
||||
+6
-6
@@ -126,11 +126,11 @@ void WMAddToArray(WMArray * array, void *item)
|
||||
|
||||
void WMInsertInArray(WMArray * array, int index, void *item)
|
||||
{
|
||||
wassertr(array && index >= 0 && index <= array->itemCount);
|
||||
|
||||
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);
|
||||
@@ -148,11 +148,11 @@ void *WMReplaceInArray(WMArray * array, int index, void *item)
|
||||
{
|
||||
void *old;
|
||||
|
||||
wassertrv(array && index >= 0 && index <= array->itemCount, NULL);
|
||||
|
||||
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);
|
||||
@@ -167,11 +167,11 @@ void *WMReplaceInArray(WMArray * array, int index, void *item)
|
||||
|
||||
int WMDeleteFromArray(WMArray * array, int index)
|
||||
{
|
||||
wassertrv(array && index >= 0 && index < array->itemCount, 0);
|
||||
|
||||
if (array == NULL)
|
||||
return 0;
|
||||
|
||||
wassertrv(index >= 0 && index < array->itemCount, 0);
|
||||
|
||||
if (array->destructor) {
|
||||
array->destructor(array->items[index]);
|
||||
}
|
||||
|
||||
+8
-28
@@ -420,10 +420,8 @@ void WMInsertInBag(WMBag * self, int index, void *item)
|
||||
self->count++;
|
||||
}
|
||||
|
||||
int WMRemoveFromBag(WMBag * self, void *item)
|
||||
static int treeDeleteNode(WMBag * self, W_Node *ptr)
|
||||
{
|
||||
W_Node *ptr = treeFind(self->root, self->nil, item);
|
||||
|
||||
if (ptr != self->nil) {
|
||||
W_Node *tmp;
|
||||
|
||||
@@ -439,11 +437,15 @@ int WMRemoveFromBag(WMBag * self, void *item)
|
||||
if (self->destructor)
|
||||
self->destructor(ptr->data);
|
||||
wfree(ptr);
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
}
|
||||
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)
|
||||
@@ -470,29 +472,7 @@ int WMEraseFromBag(WMBag * self, int index)
|
||||
int WMDeleteFromBag(WMBag * self, int index)
|
||||
{
|
||||
W_Node *ptr = treeSearch(self->root, self->nil, index);
|
||||
|
||||
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);
|
||||
|
||||
wassertrv(self->count == 0 || self->root->index >= 0, 1);
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
return treeDeleteNode(self, ptr);
|
||||
}
|
||||
|
||||
void *WMGetFromBag(WMBag * self, int index)
|
||||
|
||||
+4
-3
@@ -1,3 +1,4 @@
|
||||
#include "wconfig.h"
|
||||
|
||||
#include "WINGsP.h"
|
||||
|
||||
@@ -56,7 +57,7 @@ WMDragOperationType W_ActionToOperation(WMScreen * scr, Atom action)
|
||||
} else {
|
||||
char *tmp = XGetAtomName(scr->display, action);
|
||||
|
||||
wwarning("unknown XDND action %s ", tmp);
|
||||
wwarning(_("unknown XDND action %s"), tmp);
|
||||
XFree(tmp);
|
||||
|
||||
return WDOperationCopy;
|
||||
@@ -138,7 +139,7 @@ W_SendDnDClientMessage(Display * dpy, Window win, Atom message,
|
||||
#endif
|
||||
|
||||
if (!windowExists(dpy, win)) {
|
||||
wwarning("xdnd message target %lu does no longer exist.", win);
|
||||
wwarning(_("target %lu for XDND message no longer exists"), win);
|
||||
return False; /* message not sent */
|
||||
}
|
||||
|
||||
@@ -216,7 +217,7 @@ void W_HandleDNDClientMessage(WMView * toplevel, XClientMessageEvent * event)
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
wwarning("received dnd enter msg with unsupported version %i", XDND_SOURCE_VERSION(info));
|
||||
wwarning(_("unsupported version %i for XDND enter message"), XDND_SOURCE_VERSION(info));
|
||||
W_DragDestinationCancelDropOnEnter(toplevel, info);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -19,9 +19,7 @@
|
||||
#define XDND_REQUIRED_TYPES(dragInfo) dragInfo->destInfo->requiredTypes
|
||||
#define XDND_SOURCE_ACTION(dragInfo) dragInfo->sourceAction
|
||||
#define XDND_DEST_ACTION(dragInfo) dragInfo->destinationAction
|
||||
#define XDND_SOURCE_OPERATIONS(dragInfo) dragInfo->destInfo->sourceOperations
|
||||
#define XDND_DROP_DATAS(dragInfo) dragInfo->destInfo->dropDatas
|
||||
#define XDND_DROP_DATA_COUNT(dragInfo) dragInfo->destInfo->dropDataCount
|
||||
#define XDND_DEST_VIEW_IS_REGISTERED(dragInfo) ((dragInfo->destInfo) != NULL)\
|
||||
&& ((dragInfo->destInfo->destView->dragDestinationProcs) != NULL)
|
||||
|
||||
|
||||
+4
-4
@@ -160,7 +160,7 @@ static void selectionLost(WMView * view, Atom selection, void *cdata)
|
||||
(void) selection;
|
||||
(void) cdata;
|
||||
|
||||
wwarning("DND selection lost during drag operation...");
|
||||
wwarning(_("XDND selection lost during drag operation..."));
|
||||
}
|
||||
|
||||
static void selectionDone(WMView * view, Atom selection, Atom target, void *cdata)
|
||||
@@ -755,7 +755,7 @@ static void storeDestinationProtocolVersion(WMDraggingInfo * info)
|
||||
XFree(winXdndVersion);
|
||||
} else {
|
||||
XDND_DEST_VERSION(info) = 0;
|
||||
wwarning("failed to read XDND version of drop target");
|
||||
wwarning(_("could not get XDND version for target of drop"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -771,7 +771,7 @@ static void initMotionProcess(WMView * view, WMDraggingInfo * info, XEvent * eve
|
||||
XDND_TIMESTAMP(info) = event->xmotion.time;
|
||||
|
||||
if (!WMCreateSelectionHandler(view, scr->xdndSelectionAtom, CurrentTime, XDND_SELECTION_PROCS(info), NULL)) {
|
||||
wwarning("could not get ownership or DND selection");
|
||||
wwarning(_("could not get ownership of XDND selection"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1067,7 +1067,7 @@ static void dragSourceResponseTimeOut(void *source)
|
||||
WMView *view = (WMView *) source;
|
||||
WMDraggingInfo *info = &(W_VIEW_SCREEN(view)->dragInfo);
|
||||
|
||||
wwarning("delay for drag destination response expired");
|
||||
wwarning(_("delay for drag destination response expired"));
|
||||
sendLeaveMessage(info);
|
||||
|
||||
recolorCursor(info, False);
|
||||
|
||||
+88
-42
@@ -23,7 +23,9 @@
|
||||
|
||||
#include "WUtil.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -422,60 +424,104 @@ char *wfindfileinarray(WMPropList *array, const char *file)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int wcopy_file(const char *dir, const char *src_file, const char *dest_file)
|
||||
int wcopy_file(const char *dest_dir, const char *src_file, const char *dest_file)
|
||||
{
|
||||
FILE *src, *dst;
|
||||
size_t nread, nwritten;
|
||||
char *dstpath;
|
||||
struct stat st;
|
||||
char buf[4096];
|
||||
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 */
|
||||
|
||||
/* only to a directory */
|
||||
if (stat(dir, &st) != 0 || !S_ISDIR(st.st_mode))
|
||||
return -1;
|
||||
/* only copy files */
|
||||
if (stat(src_file, &st) != 0 || !S_ISREG(st.st_mode))
|
||||
return -1;
|
||||
|
||||
do {
|
||||
src = fopen(src_file, "rb");
|
||||
} while ((src == NULL) && (errno == EINTR));
|
||||
if (src == NULL) {
|
||||
werror(_("Could not open input file \"%s\""), src_file);
|
||||
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;
|
||||
}
|
||||
|
||||
dstpath = wstrconcat(dir, dest_file);
|
||||
do {
|
||||
dst = fopen(dstpath, "wb");
|
||||
} while ((dst == NULL) && (errno == EINTR));
|
||||
if (dst == NULL) {
|
||||
werror(_("Could not create target file \"%s\""), dstpath);
|
||||
wfree(dstpath);
|
||||
fclose(src);
|
||||
/* Only accept to copy regular files */
|
||||
if (fstat(fd_src, &stat_src) != 0 || !S_ISREG(stat_src.st_mode)) {
|
||||
close(fd_src);
|
||||
return -1;
|
||||
}
|
||||
|
||||
do {
|
||||
nread = fread(buf, 1, sizeof(buf), src);
|
||||
if (ferror(src))
|
||||
break;
|
||||
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;
|
||||
}
|
||||
|
||||
nwritten = fwrite(buf, 1, nread, dst);
|
||||
if (ferror(dst) || feof(src) || nread != nwritten)
|
||||
break;
|
||||
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;
|
||||
}
|
||||
|
||||
} while (1);
|
||||
for (;;) {
|
||||
ssize_t size_data;
|
||||
const char *write_ptr;
|
||||
size_t write_remain;
|
||||
|
||||
if (ferror(src) || ferror(dst))
|
||||
unlink(dstpath);
|
||||
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;
|
||||
}
|
||||
|
||||
fclose(src);
|
||||
fchmod(fileno(dst), st.st_mode);
|
||||
fsync(fileno(dst));
|
||||
if (fclose(dst))
|
||||
wwarning("error occured during fclose(\"%s\")", dstpath);
|
||||
wfree(dstpath);
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
WCFLAGS="${inc_search_path}"
|
||||
WLFLAGS="${lib_search_path}"
|
||||
WLIBS="-lWINGs -lWUtil -lwraster ${GFXLIBS} ${XFTLIBS} ${XLIBS} -lm ${INTLIBS}"
|
||||
|
||||
usage="Usage: get-wings-flags [--cflags] [--ldflags] [--libs]"
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo "${usage}" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while test $# -gt 0; do
|
||||
case $1 in
|
||||
--cflags)
|
||||
echo $WCFLAGS
|
||||
;;
|
||||
--ldflags|--lflags)
|
||||
echo $WLFLAGS
|
||||
;;
|
||||
--libs)
|
||||
echo $WLIBS
|
||||
;;
|
||||
*)
|
||||
echo "${usage}" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
@@ -1,31 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
WCFLAGS="-I${includedir}"
|
||||
WLFLAGS="-L${libdir}"
|
||||
WLIBS="-lWUtil ${INTLIBS}"
|
||||
|
||||
usage="Usage: get-wutil-flags [--cflags] [--ldflags] [--libs]"
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo "${usage}" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while test $# -gt 0; do
|
||||
case $1 in
|
||||
--cflags)
|
||||
echo $WCFLAGS
|
||||
;;
|
||||
--ldflags|--lflags)
|
||||
echo $WLFLAGS
|
||||
;;
|
||||
--libs)
|
||||
echo $WLIBS
|
||||
;;
|
||||
*)
|
||||
echo "${usage}" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
+14
-26
@@ -154,7 +154,7 @@ unsigned WMCountHashTable(WMHashTable * table)
|
||||
return table->itemCount;
|
||||
}
|
||||
|
||||
void *WMHashGet(WMHashTable * table, const void *key)
|
||||
static HashItem *hashGetItem(WMHashTable *table, const void *key)
|
||||
{
|
||||
unsigned h;
|
||||
HashItem *item;
|
||||
@@ -177,44 +177,32 @@ void *WMHashGet(WMHashTable * table, const void *key)
|
||||
item = item->next;
|
||||
}
|
||||
}
|
||||
if (item)
|
||||
return (void *)item->data;
|
||||
else
|
||||
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)
|
||||
{
|
||||
unsigned h;
|
||||
HashItem *item;
|
||||
|
||||
h = HASH(table, key);
|
||||
item = table->table[h];
|
||||
item = hashGetItem(table, key);
|
||||
if (!item)
|
||||
return False;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
if (item) {
|
||||
if (retKey)
|
||||
*retKey = (void *)item->key;
|
||||
if (retItem)
|
||||
*retItem = (void *)item->data;
|
||||
return True;
|
||||
} else {
|
||||
return False;
|
||||
}
|
||||
}
|
||||
|
||||
void *WMHashInsert(WMHashTable * table, const void *key, const void *data)
|
||||
|
||||
+6
-6
@@ -377,7 +377,7 @@ found_end_squote:
|
||||
if (limit-- > 0)
|
||||
goto restart_token_split;
|
||||
|
||||
WMenuParserError(parser, _("too many nested macro expansion, breaking loop") );
|
||||
WMenuParserError(parser, _("too many nested macro expansions, breaking loop"));
|
||||
|
||||
while (isnamechr(*parser->rd))
|
||||
parser->rd++;
|
||||
@@ -436,7 +436,7 @@ static void menu_parser_get_directive(WMenuParser parser)
|
||||
menu_parser_condition_end(parser);
|
||||
|
||||
} else {
|
||||
WMenuParserError(parser, _("unknow directive '#%s'"), command);
|
||||
WMenuParserError(parser, _("unknown directive '#%s'"), command);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -500,7 +500,7 @@ found_end_define_fname:
|
||||
count++;
|
||||
|
||||
if (count > MAX_NESTED_INCLUDES) {
|
||||
WMenuParserError(parser, _("too many nested includes") );
|
||||
WMenuParserError(parser, _("too many nested #include's"));
|
||||
return False;
|
||||
}
|
||||
}
|
||||
@@ -565,7 +565,7 @@ found_end_define_fname:
|
||||
src++;
|
||||
}
|
||||
}
|
||||
WMenuParserError(parser, _("could not find file \"%s\" for include"), req_filename);
|
||||
WMenuParserError(parser, _("could not find file \"%s\" for #include"), req_filename);
|
||||
return False;
|
||||
}
|
||||
|
||||
@@ -623,7 +623,7 @@ static void menu_parser_condition_ifmacro(WMenuParser parser, Bool check_exists)
|
||||
static void menu_parser_condition_else(WMenuParser parser)
|
||||
{
|
||||
if (parser->cond.depth <= 0) {
|
||||
WMenuParserError(parser, _("found #%s but have no matching #if"), "else" );
|
||||
WMenuParserError(parser, _("found #%s but has no matching #if"), "else");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -640,7 +640,7 @@ static void menu_parser_condition_end(WMenuParser parser)
|
||||
int idx;
|
||||
|
||||
if (parser->cond.depth <= 0) {
|
||||
WMenuParserError(parser, _("found #%s but have no matching #if"), "endif" );
|
||||
WMenuParserError(parser, _("found #%s but has no matching #if"), "endif");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -206,7 +206,7 @@ void menu_parser_define_macro(WMenuParser parser)
|
||||
arg_names_buf[idx] = '\0';
|
||||
if (idx < sizeof(arg_names_buf) - 1) idx++;
|
||||
} else {
|
||||
WMenuParserError(parser, _("invalid characted '%c' in arg-list for macro \"%s\" while expecting parameter name"),
|
||||
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
|
||||
@@ -217,7 +217,7 @@ void menu_parser_define_macro(WMenuParser parser)
|
||||
if (*parser->rd == ')') break;
|
||||
|
||||
if (*parser->rd != ',') {
|
||||
WMenuParserError(parser, _("invalid characted '%c' in arg-list for macro \"%s\" while expecting ',' or ')'"),
|
||||
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
|
||||
|
||||
+91
-16
@@ -1,50 +1,125 @@
|
||||
nlsdir = $(NLSDIR)
|
||||
DOMAIN = WINGs
|
||||
|
||||
CATALOGS = @WINGSMOFILES@
|
||||
|
||||
CLEANFILES = $(CATALOGS) WINGs.pot
|
||||
CLEANFILES = $(CATALOGS) $(DOMAIN).pot
|
||||
|
||||
EXTRA_DIST = bg.po ca.po cs.po de.po fr.po hu.po nl.po sk.po
|
||||
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/wruler.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:
|
||||
msgfmt -c -o $@ $<
|
||||
$(AM_V_GEN)$(MSGFMT) -c -o $@ $<
|
||||
|
||||
|
||||
all-local: $(CATALOGS)
|
||||
|
||||
WINGs.pot: $(POTFILES)
|
||||
xgettext --default-domain=WINGs \
|
||||
|
||||
.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 WINGs.po WINGs.pot; then \
|
||||
rm -f WINGs.po; \
|
||||
@if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \
|
||||
rm -f $(DOMAIN).po; \
|
||||
else \
|
||||
mv -f WINGs.po WINGs.pot; \
|
||||
mv -f $(DOMAIN).po $(DOMAIN).pot; \
|
||||
fi
|
||||
endif
|
||||
|
||||
|
||||
install-data-local: $(CATALOGS)
|
||||
$(mkinstalldirs) $(DESTDIR)$(nlsdir)
|
||||
chmod 755 $(DESTDIR)$(nlsdir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(localedir)
|
||||
for n in $(CATALOGS) __DuMmY ; do \
|
||||
if test "$$n" -a "$$n" != "__DuMmY" ; then \
|
||||
l=`basename $$n .mo`; \
|
||||
$(mkinstalldirs) $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \
|
||||
chmod 755 $(DESTDIR)$(nlsdir)/$$l; \
|
||||
chmod 755 $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \
|
||||
$(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES/WINGs.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"
|
||||
|
||||
+1
-6
@@ -1,9 +1,3 @@
|
||||
|
||||
Instructions for translating po files can be found in the po/README directory
|
||||
in the top of the WindowMaker source tree.
|
||||
|
||||
All files are in UTF-8
|
||||
|
||||
File Language Note Current Maintainer
|
||||
------------------------------------------------------------------------------
|
||||
ca.po Catalan Ernest Adrogué <eadrogue@gmx.net>
|
||||
@@ -14,6 +8,7 @@ fr.po French Emmanuel Benoit <tseeker@neptune.fr>
|
||||
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
|
||||
-----
|
||||
|
||||
+1
-1
@@ -545,7 +545,7 @@ msgstr "\"%s\" е директория."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:829
|
||||
#, c-format
|
||||
msgid "An error occured browsing '%s'."
|
||||
msgid "An error occurred browsing '%s'."
|
||||
msgstr "Настъпи грешка при показване на \"%s\"."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:833
|
||||
|
||||
+1
-1
@@ -557,7 +557,7 @@ msgstr "\"%s\" és un directori."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:832
|
||||
#, c-format
|
||||
msgid "An error occured browsing '%s'."
|
||||
msgid "An error occurred browsing '%s'."
|
||||
msgstr "S'ha produït un error mentre s'explorava \"%s\"."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:836
|
||||
|
||||
+5
-5
@@ -22,8 +22,8 @@ msgid "Bad address-service-protocol combination"
|
||||
msgstr "Nesprávná kombinace adresa-služba-protokol"
|
||||
|
||||
#: ../../WINGs/dragsource.c:541
|
||||
msgid "DND selection lost during drag operation..."
|
||||
msgstr "DND výběr se ztratil během opere táhnutí..."
|
||||
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
|
||||
@@ -31,8 +31,8 @@ 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 or DND selection"
|
||||
msgstr "nemožné získat vlastnictví nebo DND výběr"
|
||||
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
|
||||
@@ -489,7 +489,7 @@ msgstr "'%s' je adresář."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:821
|
||||
#, c-format
|
||||
msgid "An error occured browsing '%s'."
|
||||
msgid "An error occurred browsing '%s'."
|
||||
msgstr "Při prohlížení '%s' nastala chyba."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:825
|
||||
|
||||
+1
-1
@@ -553,7 +553,7 @@ msgstr "'%s' ist ein Verzeichnis."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:832
|
||||
#, c-format
|
||||
msgid "An error occured browsing '%s'."
|
||||
msgid "An error occurred browsing '%s'."
|
||||
msgstr "Fehler beim Lesen von '%s'."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:836
|
||||
|
||||
+1
-1
@@ -559,7 +559,7 @@ msgstr "'%s' est un répertoire."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:832
|
||||
#, c-format
|
||||
msgid "An error occured browsing '%s'."
|
||||
msgid "An error occurred browsing '%s'."
|
||||
msgstr "Une erreur s'est produite pendant le parcours de '%s'."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:836
|
||||
|
||||
+835
@@ -0,0 +1,835 @@
|
||||
# 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"
|
||||
+3
-3
@@ -197,8 +197,8 @@ msgid "Could not create component %s"
|
||||
msgstr "Nem sikerült létrehozni a %s elemet"
|
||||
|
||||
#: ../../../wmaker-crm/WINGs/userdefaults.c:65
|
||||
msgid "variable GNUSTEP_USER_ROOT defined with invalid path, not used"
|
||||
msgstr "A GNUSTEP_USER_ROOT változó be van állítva, de rossz értékre. Nem használom"
|
||||
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
|
||||
@@ -537,7 +537,7 @@ msgstr "Hiba \"%s\" törlésekor: %s"
|
||||
|
||||
#: ../../../wmaker-crm/WINGs/wfilepanel.c:749
|
||||
#, c-format
|
||||
msgid "An error occured browsing '%s'."
|
||||
msgid "An error occurred browsing '%s'."
|
||||
msgstr "Hiba történt a '%s' olvasásakor."
|
||||
|
||||
#: ../../../wmaker-crm/WINGs/wfilepanel.c:752
|
||||
|
||||
+401
-106
@@ -1,14 +1,14 @@
|
||||
# New translation into Dutch for Window Maker
|
||||
# Copyright (C) 2014 Window Maker Developers Team
|
||||
# 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.5-473-gb431dcc3\n"
|
||||
"Project-Id-Version: wmaker-0.95.6+\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-06-20 10:55+0200\n"
|
||||
"PO-Revision-Date: 2014-06-20 00:00+0200\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"
|
||||
@@ -28,30 +28,226 @@ msgstr "fout: "
|
||||
msgid "warning: "
|
||||
msgstr "waarschuwing: "
|
||||
|
||||
#: ../../WINGs/findfile.c:61
|
||||
#: ../../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:91
|
||||
#: ../../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:210
|
||||
#: ../../WINGs/findfile.c:212
|
||||
#, c-format
|
||||
msgid "could not expand %s"
|
||||
msgstr "kon %s niet uitwerken"
|
||||
|
||||
#: ../../WINGs/findfile.c:444
|
||||
#: ../../WINGs/findfile.c:441
|
||||
#, c-format
|
||||
msgid "Could not open input file \"%s\""
|
||||
msgstr "Kon invoerbestand \"%s\" niet openen"
|
||||
msgid "Could not open input file \"%s\": %s"
|
||||
msgstr "Kon invoerbestand \"%s\" niet openen: %s"
|
||||
|
||||
#: ../../WINGs/findfile.c:453
|
||||
#: ../../WINGs/findfile.c:457
|
||||
#, c-format
|
||||
msgid "Could not create target file \"%s\""
|
||||
msgstr "Kon doelbestand \"%s\" niet aanmaken"
|
||||
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
|
||||
@@ -65,8 +261,8 @@ 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:1245 ../../WINGs/proplist.c:1313
|
||||
#: ../../WINGs/proplist.c:1418 ../../WINGs/proplist.c:1462
|
||||
#: ../../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 ""
|
||||
|
||||
@@ -137,71 +333,102 @@ msgstr ""
|
||||
msgid "Comments are not allowed inside WindowMaker owned domain files."
|
||||
msgstr "Commentaar is niet toegestaan binnen domeinbestanden van WindowMaker."
|
||||
|
||||
#: ../../WINGs/proplist.c:1482 ../../WINGs/proplist.c:1547
|
||||
#: ../../WINGs/proplist.c:1604
|
||||
#: ../../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:1522
|
||||
#: ../../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:1530
|
||||
#: ../../WINGs/proplist.c:1531
|
||||
#, c-format
|
||||
msgid "error reading from file '%s'"
|
||||
msgstr "fout bij lezen uit bestand '%s'"
|
||||
msgstr "fout bij inlezen bestand '%s'"
|
||||
|
||||
#: ../../WINGs/proplist.c:1575
|
||||
#: ../../WINGs/proplist.c:1578
|
||||
#, c-format
|
||||
msgid "%s:could not open menu file"
|
||||
msgstr "%s:kon menubestand niet openen"
|
||||
|
||||
#: ../../WINGs/proplist.c:1642
|
||||
#: ../../WINGs/proplist.c:1660
|
||||
#, c-format
|
||||
msgid "mkstemp (%s) failed"
|
||||
msgstr "aanmaken uniek tijdelijk bestand (%s) mislukt"
|
||||
|
||||
#: ../../WINGs/proplist.c:1653
|
||||
#: ../../WINGs/proplist.c:1670
|
||||
#, c-format
|
||||
msgid "mktemp (%s) failed"
|
||||
msgstr "aanmaken tijdelijk bestand (%s) mislukt"
|
||||
|
||||
#: ../../WINGs/proplist.c:1660
|
||||
#: ../../WINGs/proplist.c:1677
|
||||
#, c-format
|
||||
msgid "open (%s) failed"
|
||||
msgstr "openen (%s) mislukt"
|
||||
|
||||
#: ../../WINGs/proplist.c:1667
|
||||
#: ../../WINGs/proplist.c:1684
|
||||
#, c-format
|
||||
msgid "writing to file: %s failed"
|
||||
msgstr "schrijven naar bestand: %s mislukt"
|
||||
|
||||
#: ../../WINGs/proplist.c:1676
|
||||
#: ../../WINGs/proplist.c:1693
|
||||
#, c-format
|
||||
msgid "fclose (%s) failed"
|
||||
msgstr "afsluiten stream (%s) mislukt"
|
||||
|
||||
#: ../../WINGs/proplist.c:1684
|
||||
#: ../../WINGs/proplist.c:1701
|
||||
#, c-format
|
||||
msgid "rename ('%s' to '%s') failed"
|
||||
msgstr "hernoemen ('%s' naar '%s') mislukt"
|
||||
|
||||
#: ../../WINGs/proplist.c:1755
|
||||
#: ../../WINGs/proplist.c:1772
|
||||
#, c-format
|
||||
msgid "Could not create component %s"
|
||||
msgstr "Kon component %s niet aanmaken"
|
||||
|
||||
#: ../../WINGs/userdefaults.c:72
|
||||
msgid "variable GNUSTEP_USER_ROOT defined with invalid path, not used"
|
||||
msgid "variable WMAKER_USER_ROOT defined with invalid path, not used"
|
||||
msgstr ""
|
||||
"variabele GNUSTEP_USER_ROOT, gedefinieerd met ongeldig pad, niet gebruikt"
|
||||
"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 domein niet lezen uit bestand '%s' bij synchroniseren"
|
||||
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
|
||||
@@ -225,102 +452,110 @@ msgstr "grijs"
|
||||
msgid "dark gray"
|
||||
msgstr "donkergrijs"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:399
|
||||
#: ../../WINGs/wcolorpanel.c:393
|
||||
msgid "Colors"
|
||||
msgstr "Kleuren"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:574 ../../WINGs/wcolorpanel.c:2726
|
||||
#: ../../WINGs/wcolorpanel.c:568 ../../WINGs/wcolorpanel.c:2720
|
||||
msgid "Brightness"
|
||||
msgstr "Helderheid"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:576 ../../WINGs/wcolorpanel.c:650
|
||||
#: ../../WINGs/wcolorpanel.c:681 ../../WINGs/wcolorpanel.c:712
|
||||
#: ../../WINGs/wcolorpanel.c:787 ../../WINGs/wcolorpanel.c:818
|
||||
#: ../../WINGs/wcolorpanel.c:850 ../../WINGs/wcolorpanel.c:883
|
||||
#: ../../WINGs/wcolorpanel.c:2022 ../../WINGs/wcolorpanel.c:2728
|
||||
#: ../../WINGs/wcolorpanel.c:2762 ../../WINGs/wcolorpanel.c:2796
|
||||
#: ../../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:648
|
||||
#: ../../WINGs/wcolorpanel.c:642
|
||||
msgid "Red"
|
||||
msgstr "Rood"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:679
|
||||
#: ../../WINGs/wcolorpanel.c:673
|
||||
msgid "Green"
|
||||
msgstr "Groen"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:710
|
||||
#: ../../WINGs/wcolorpanel.c:704
|
||||
msgid "Blue"
|
||||
msgstr "Blauw"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:785
|
||||
#: ../../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:816
|
||||
#: ../../WINGs/wcolorpanel.c:810
|
||||
msgid "Magenta"
|
||||
msgstr "Magenta"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:848
|
||||
#: ../../WINGs/wcolorpanel.c:842
|
||||
msgid "Yellow"
|
||||
msgstr "Geel"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:881
|
||||
#: ../../WINGs/wcolorpanel.c:875
|
||||
msgid "Black"
|
||||
msgstr "Zwart"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:956
|
||||
#: ../../WINGs/wcolorpanel.c:950
|
||||
msgid "Spectrum"
|
||||
msgstr "Spectrum"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:982
|
||||
#: ../../WINGs/wcolorpanel.c:976
|
||||
msgid "Palette"
|
||||
msgstr "Palet"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:987
|
||||
#: ../../WINGs/wcolorpanel.c:981
|
||||
msgid "New from File..."
|
||||
msgstr "Nieuw uit bestand..."
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:988 ../../WINGs/wcolorpanel.c:1033
|
||||
#: ../../WINGs/wcolorpanel.c:1048
|
||||
#: ../../WINGs/wcolorpanel.c:982 ../../WINGs/wcolorpanel.c:1027
|
||||
#: ../../WINGs/wcolorpanel.c:1042
|
||||
msgid "Rename..."
|
||||
msgstr "Hernoemen..."
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:989 ../../WINGs/wcolorpanel.c:1034
|
||||
#: ../../WINGs/wcolorpanel.c:1049 ../../WINGs/wcolorpanel.c:3188
|
||||
#: ../../WINGs/wcolorpanel.c:983 ../../WINGs/wcolorpanel.c:1028
|
||||
#: ../../WINGs/wcolorpanel.c:1043 ../../WINGs/wcolorpanel.c:3180
|
||||
msgid "Remove"
|
||||
msgstr "Verwijderen"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:990
|
||||
#: ../../WINGs/wcolorpanel.c:984
|
||||
msgid "Copy"
|
||||
msgstr "Kopiëren"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:991
|
||||
#: ../../WINGs/wcolorpanel.c:985
|
||||
msgid "New from Clipboard"
|
||||
msgstr "Nieuw van klembord"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1010
|
||||
#: ../../WINGs/wcolorpanel.c:1004
|
||||
msgid "X11-Colors"
|
||||
msgstr "X11-kleuren"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1027
|
||||
#: ../../WINGs/wcolorpanel.c:1021
|
||||
msgid "Color"
|
||||
msgstr "Kleur"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1032
|
||||
#: ../../WINGs/wcolorpanel.c:1026
|
||||
msgid "Add..."
|
||||
msgstr "Toevoegen..."
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1042
|
||||
#: ../../WINGs/wcolorpanel.c:1036
|
||||
msgid "List"
|
||||
msgstr "Lijst"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1047
|
||||
#: ../../WINGs/wcolorpanel.c:1041
|
||||
msgid "New..."
|
||||
msgstr "Nieuw..."
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1176
|
||||
#: ../../WINGs/wcolorpanel.c:1170
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Color Panel: Could not create directory %s needed to store configurations"
|
||||
@@ -328,76 +563,76 @@ msgstr ""
|
||||
"Kleurenpaneel: Kon map %s, nodig om instellingen op te slaan, niet aanmaken"
|
||||
|
||||
#. Delete the file, it doesn't belong here
|
||||
#: ../../WINGs/wcolorpanel.c:1182 ../../WINGs/wcolorpanel.c:3081
|
||||
#: ../../WINGs/wcolorpanel.c:3085
|
||||
#: ../../WINGs/wcolorpanel.c:1176 ../../WINGs/wcolorpanel.c:3073
|
||||
#: ../../WINGs/wcolorpanel.c:3077
|
||||
msgid "File Error"
|
||||
msgstr "Bestandsfout"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1183
|
||||
#: ../../WINGs/wcolorpanel.c:1177
|
||||
msgid "Could not create ColorPanel configuration directory"
|
||||
msgstr "Kon instellingenmap Kleurenpaneel niet aanmaken"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1184 ../../WINGs/wcolorpanel.c:3082
|
||||
#: ../../WINGs/wcolorpanel.c:3087 ../../WINGs/wcolorpanel.c:3112
|
||||
#: ../../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:534
|
||||
#: ../../WINGs/wfilepanel.c:883 ../../WINGs/wfontpanel.c:532
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1190
|
||||
#: ../../WINGs/wcolorpanel.c:1184
|
||||
msgid "Color Panel: Could not find file"
|
||||
msgstr "Kleurenpaneel: Kon bestand niet vinden"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:1386 ../../WINGs/wcolorpanel.c:1447
|
||||
#: ../../WINGs/wcolorpanel.c:1507
|
||||
#: ../../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:2760
|
||||
#: ../../WINGs/wcolorpanel.c:2754
|
||||
msgid "Saturation"
|
||||
msgstr "Verzadiging"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:2794
|
||||
#: ../../WINGs/wcolorpanel.c:2788
|
||||
msgid "Hue"
|
||||
msgstr "Tint"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3020
|
||||
#: ../../WINGs/wcolorpanel.c:3012
|
||||
msgid "Open Palette"
|
||||
msgstr "Open palet"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3082
|
||||
#: ../../WINGs/wcolorpanel.c:3074
|
||||
msgid "Invalid file format !"
|
||||
msgstr "Ongeldige bestandsvorm!"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3084
|
||||
#: ../../WINGs/wcolorpanel.c:3076
|
||||
#, c-format
|
||||
msgid "can't remove file %s"
|
||||
msgstr "kan bestand %s niet verwijderen"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3086
|
||||
#: ../../WINGs/wcolorpanel.c:3078
|
||||
msgid "Couldn't remove file from Configuration Directory !"
|
||||
msgstr "Kon bestand niet verwijderen uit instellingenmap!"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3111
|
||||
#: ../../WINGs/wcolorpanel.c:3103
|
||||
msgid "Rename"
|
||||
msgstr "Hernoemen"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3111
|
||||
#: ../../WINGs/wcolorpanel.c:3103
|
||||
msgid "Rename palette to:"
|
||||
msgstr "Hernoem palet naar:"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3112 ../../WINGs/wfilepanel.c:236
|
||||
#: ../../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:3128 ../../WINGs/wfilepanel.c:715
|
||||
#: ../../WINGs/wcolorpanel.c:3120 ../../WINGs/wfilepanel.c:715
|
||||
msgid "Warning"
|
||||
msgstr "Waarschuwing"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3129
|
||||
#: ../../WINGs/wcolorpanel.c:3121
|
||||
msgid ""
|
||||
"Palette already exists !\n"
|
||||
"\n"
|
||||
@@ -407,24 +642,24 @@ msgstr ""
|
||||
"\n"
|
||||
"Overschrijven?"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3129 ../../WINGs/wcolorpanel.c:3188
|
||||
#: ../../WINGs/wcolorpanel.c:3121 ../../WINGs/wcolorpanel.c:3180
|
||||
msgid "No"
|
||||
msgstr "Nee"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3129 ../../WINGs/wcolorpanel.c:3188
|
||||
#: ../../WINGs/wcolorpanel.c:3121 ../../WINGs/wcolorpanel.c:3180
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3160
|
||||
#: ../../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:3183
|
||||
#: ../../WINGs/wcolorpanel.c:3175
|
||||
msgid "This will permanently remove the palette "
|
||||
msgstr "Dit zal 't palet "
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3185
|
||||
#: ../../WINGs/wcolorpanel.c:3177
|
||||
msgid ""
|
||||
".\n"
|
||||
"\n"
|
||||
@@ -434,12 +669,12 @@ msgstr ""
|
||||
"\n"
|
||||
"Weet u zeker dat u dit palet wilt verwijderen?"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3207
|
||||
#: ../../WINGs/wcolorpanel.c:3199
|
||||
#, c-format
|
||||
msgid "Couldn't remove palette %s"
|
||||
msgstr "Kon palet %s niet verwijderen"
|
||||
|
||||
#: ../../WINGs/wcolorpanel.c:3497
|
||||
#: ../../WINGs/wcolorpanel.c:3499
|
||||
msgid "Color Panel: Color unspecified"
|
||||
msgstr "Kleurenpaneel: Kleur niet opgegeven"
|
||||
|
||||
@@ -458,15 +693,15 @@ msgstr "Opslaan"
|
||||
#: ../../WINGs/wfilepanel.c:506
|
||||
#, c-format
|
||||
msgid "WINGs: could not open directory %s\n"
|
||||
msgstr "WINGs: kon map %s niet openen\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"
|
||||
msgstr "WINGs: Kon status %s niet vaststellen\n"
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:596 ../../WINGs/wfilepanel.c:883
|
||||
#: ../../WINGs/wfontpanel.c:533
|
||||
#: ../../WINGs/wfontpanel.c:531
|
||||
msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
@@ -508,8 +743,8 @@ msgstr "Verwijderen %s mislukt: %s"
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:751
|
||||
#, c-format
|
||||
msgid "An error occured browsing '%s'."
|
||||
msgstr "'n Fout trad op bij bladeren door '%s'."
|
||||
msgid "An error occurred browsing '%s'."
|
||||
msgstr "Er trad 'n fout op bij bladeren door '%s'."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:754
|
||||
#, c-format
|
||||
@@ -520,55 +755,60 @@ msgstr "'%s' is geen map."
|
||||
msgid "File does not exist."
|
||||
msgstr "Bestand bestaat niet."
|
||||
|
||||
#: ../../WINGs/wfont.c:37
|
||||
#: ../../WINGs/wfont.c:43
|
||||
#, c-format
|
||||
msgid "invalid font: %s. Trying '%s'"
|
||||
msgstr "ongeldig lettertype: %s. Probeert '%s'"
|
||||
|
||||
#: ../../WINGs/wfont.c:227 ../../WINGs/wfont.c:245
|
||||
#: ../../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:186
|
||||
#: ../../WINGs/wfontpanel.c:184
|
||||
msgid "Font Panel"
|
||||
msgstr "Lettertypen"
|
||||
|
||||
#: ../../WINGs/wfontpanel.c:222
|
||||
#: ../../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:228
|
||||
#: ../../WINGs/wfontpanel.c:226
|
||||
msgid "Family"
|
||||
msgstr "Familie"
|
||||
|
||||
#: ../../WINGs/wfontpanel.c:239
|
||||
#: ../../WINGs/wfontpanel.c:237
|
||||
msgid "Typeface"
|
||||
msgstr "Lettertype"
|
||||
|
||||
#: ../../WINGs/wfontpanel.c:250
|
||||
#: ../../WINGs/wfontpanel.c:248
|
||||
msgid "Size"
|
||||
msgstr "Grootte"
|
||||
|
||||
#: ../../WINGs/wfontpanel.c:269
|
||||
#: ../../WINGs/wfontpanel.c:267
|
||||
msgid "Set"
|
||||
msgstr "Instellen"
|
||||
|
||||
#: ../../WINGs/wfontpanel.c:275
|
||||
#: ../../WINGs/wfontpanel.c:273
|
||||
msgid "Revert"
|
||||
msgstr "Herstellen"
|
||||
|
||||
#: ../../WINGs/wfontpanel.c:534
|
||||
#: ../../WINGs/wfontpanel.c:532
|
||||
msgid "Could not init font config library\n"
|
||||
msgstr "Kon bibliotheek 'lettertype instellen' niet initialiseren\n"
|
||||
|
||||
#: ../../WINGs/widgets.c:389
|
||||
#: ../../WINGs/widgets.c:446
|
||||
#, c-format
|
||||
msgid "WINGs: could not load widget images file: %s"
|
||||
msgstr "WINGs: kon afbeeldingenbestand besturingselementen niet laden: %s"
|
||||
msgstr "WINGs: Kon afbeeldingenbestand besturingselementen niet laden: %s"
|
||||
|
||||
#: ../../WINGs/widgets.c:724
|
||||
#: ../../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."
|
||||
@@ -576,6 +816,61 @@ 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"
|
||||
|
||||
+1
-1
@@ -557,7 +557,7 @@ msgstr "'%s' je adresár."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:832
|
||||
#, c-format
|
||||
msgid "An error occured browsing '%s'."
|
||||
msgid "An error occurred browsing '%s'."
|
||||
msgstr "Pri prehliadaní '%s' nastala chyba."
|
||||
|
||||
#: ../../WINGs/wfilepanel.c:836
|
||||
|
||||
+28
-6
@@ -1213,6 +1213,7 @@ WMPropList *WMSubtractPLDictionaries(WMPropList * dest, WMPropList * source, Boo
|
||||
for (i = 0; i < WMGetArrayItemCount(keys->d.array); i++) {
|
||||
WMRemoveFromPLDictionary(dest, WMGetFromArray(keys->d.array, i));
|
||||
}
|
||||
WMReleasePropList(keys);
|
||||
return dest;
|
||||
}
|
||||
|
||||
@@ -1252,22 +1253,34 @@ int WMGetPropListItemCount(WMPropList * plist)
|
||||
|
||||
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)
|
||||
@@ -1645,13 +1658,22 @@ Bool WMWritePropListToFile(WMPropList * plist, const char *path)
|
||||
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;
|
||||
}
|
||||
mask = umask(0);
|
||||
umask(mask);
|
||||
fchmod(fd, 0644 & ~mask);
|
||||
fchmod(fd, 0666 & ~mask);
|
||||
if ((theFile = fdopen(fd, "wb")) == NULL) {
|
||||
close(fd);
|
||||
}
|
||||
@@ -1709,7 +1731,7 @@ Bool WMWritePropListToFile(WMPropList * plist, const char *path)
|
||||
* file, and the last component is stripped off. the rest is the
|
||||
* the hierarchy to be created.
|
||||
*
|
||||
* refuses to create anything outside $GNUSTEP_USER_ROOT
|
||||
* refuses to create anything outside $WMAKER_USER_ROOT
|
||||
*
|
||||
* returns 1 on success, 0 on failure
|
||||
*/
|
||||
@@ -1720,7 +1742,7 @@ int wmkdirhier(const char *path)
|
||||
size_t p, plen;
|
||||
struct stat st;
|
||||
|
||||
/* Only create directories under $GNUSTEP_USER_ROOT */
|
||||
/* Only create directories under $WMAKER_USER_ROOT */
|
||||
if ((t = wusergnusteppath()) == NULL)
|
||||
return 0;
|
||||
if (strncmp(path, t, strlen(t)) != 0)
|
||||
@@ -1801,7 +1823,7 @@ static int wrmdirhier_fn(const char *path, const struct stat *st,
|
||||
/*
|
||||
* remove a directory hierarchy
|
||||
*
|
||||
* refuses to remove anything outside $GNUSTEP_USER_ROOT
|
||||
* refuses to remove anything outside $WMAKER_USER_ROOT
|
||||
*
|
||||
* returns 1 on success, 0 on failure
|
||||
*
|
||||
@@ -1815,7 +1837,7 @@ int wrmdirhier(const char *path)
|
||||
int error;
|
||||
const char *t;
|
||||
|
||||
/* Only remove directories under $GNUSTEP_USER_ROOT */
|
||||
/* Only remove directories under $WMAKER_USER_ROOT */
|
||||
if ((t = wusergnusteppath()) == NULL)
|
||||
return EPERM;
|
||||
if (strncmp(path, t, strlen(t)) != 0)
|
||||
|
||||
+1
-1
@@ -261,7 +261,7 @@ static WMData *getSelectionData(Display * dpy, Window win, Atom where)
|
||||
|
||||
bpi = bits / 8;
|
||||
|
||||
wdata = WMCreateDataWithBytesNoCopy(data, len * bpi, (WMFreeDataProc *) XFree);
|
||||
wdata = WMCreateDataWithBytesNoCopy(data, len * bpi, (void *) XFree);
|
||||
WMSetDataFormat(wdata, bits);
|
||||
|
||||
return wdata;
|
||||
|
||||
@@ -59,9 +59,9 @@ const char *wusergnusteppath()
|
||||
return path;
|
||||
|
||||
#ifdef HAVE_SECURE_GETENV
|
||||
gspath = secure_getenv("GNUSTEP_USER_ROOT");
|
||||
gspath = secure_getenv("WMAKER_USER_ROOT");
|
||||
#else
|
||||
gspath = getenv("GNUSTEP_USER_ROOT");
|
||||
gspath = getenv("WMAKER_USER_ROOT");
|
||||
#endif
|
||||
if (gspath) {
|
||||
gspath = wexpandpath(gspath);
|
||||
@@ -69,7 +69,7 @@ const char *wusergnusteppath()
|
||||
path = gspath;
|
||||
return path;
|
||||
}
|
||||
wwarning(_("variable GNUSTEP_USER_ROOT defined with invalid path, not used"));
|
||||
wwarning(_("variable WMAKER_USER_ROOT defined with invalid path, not used"));
|
||||
}
|
||||
|
||||
h = wgethomedir();
|
||||
@@ -103,17 +103,14 @@ char *wdefaultspathfordomain(const char *domain)
|
||||
}
|
||||
|
||||
/* XXX: doesn't quite belong to *user*defaults.c */
|
||||
#ifndef GLOBAL_DEFAULTS_SUBDIR
|
||||
#define GLOBAL_DEFAULTS_SUBDIR "WindowMaker"
|
||||
#endif
|
||||
char *wglobaldefaultspathfordomain(const char *domain)
|
||||
{
|
||||
char *t = NULL;
|
||||
size_t len;
|
||||
|
||||
len = strlen( SYSCONFDIR ) + strlen( GLOBAL_DEFAULTS_SUBDIR ) + strlen(domain) + 3;
|
||||
len = strlen(DEFSDATADIR) + strlen(domain) + 2;
|
||||
t = wmalloc(len);
|
||||
snprintf(t, len, "%s/%s/%s", SYSCONFDIR, GLOBAL_DEFAULTS_SUBDIR, domain);
|
||||
snprintf(t, len, "%s/%s", DEFSDATADIR, domain);
|
||||
|
||||
return t;
|
||||
}
|
||||
@@ -591,7 +588,7 @@ void WMSetUDFloatForKey(WMUserDefaults * database, float value, const char *defa
|
||||
WMPropList *object;
|
||||
char buffer[128];
|
||||
|
||||
sprintf(buffer, "%f", value);
|
||||
sprintf(buffer, "%f", (double)value);
|
||||
object = WMCreatePLString(buffer);
|
||||
|
||||
WMSetUDObjectForKey(database, object, defaultName);
|
||||
|
||||
+15
-16
@@ -131,17 +131,16 @@ error:
|
||||
|
||||
char *WMPathForResourceOfType(const char *resource, const char *ext)
|
||||
{
|
||||
char *path, *tmp, *appdir;
|
||||
int i;
|
||||
char *path, *appdir;
|
||||
size_t slen;
|
||||
|
||||
path = tmp = appdir = NULL;
|
||||
path = appdir = NULL;
|
||||
|
||||
/*
|
||||
* Paths are searched in this order:
|
||||
* - resourcePath/ext
|
||||
* - dirname(argv[0])/ext
|
||||
* - GNUSTEP_USER_ROOT/Applications/ApplicationName.app/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
|
||||
@@ -156,25 +155,27 @@ char *WMPathForResourceOfType(const char *resource, const char *ext)
|
||||
}
|
||||
|
||||
if (WMApplication.argv[0]) {
|
||||
tmp = wstrdup(WMApplication.argv[0]);
|
||||
i = strlen(tmp);
|
||||
while (i > 0 && tmp[i] != '/')
|
||||
i--;
|
||||
tmp[i] = 0;
|
||||
if (i > 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);
|
||||
} else {
|
||||
path = NULL;
|
||||
}
|
||||
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("GNUSTEP_USER_ROOT"), appdir, ext, resource);
|
||||
path = checkFile(getenv("WMAKER_USER_ROOT"), appdir, ext, resource);
|
||||
if (path)
|
||||
goto out;
|
||||
|
||||
@@ -197,8 +198,6 @@ char *WMPathForResourceOfType(const char *resource, const char *ext)
|
||||
path = checkFile("/usr/GNUstep", appdir, ext, resource); /* falls through */
|
||||
|
||||
out:
|
||||
if (tmp)
|
||||
wfree(tmp);
|
||||
if (appdir)
|
||||
wfree(appdir);
|
||||
|
||||
|
||||
@@ -229,11 +229,6 @@ void W_BalloonHandleEnterView(WMView * view)
|
||||
#define LEFT 0
|
||||
#define RIGHT 2
|
||||
|
||||
#define TLEFT (TOP|LEFT)
|
||||
#define TRIGHT (TOP|RIGHT)
|
||||
#define BLEFT (BOTTOM|LEFT)
|
||||
#define BRIGHT (BOTTOM|RIGHT)
|
||||
|
||||
#define SPACE 12
|
||||
|
||||
static void drawBalloon(WMScreen * scr, Pixmap bitmap, Pixmap pix, int x, int y, int w, int h, int side)
|
||||
|
||||
+3
-10
@@ -565,7 +565,7 @@ static void scrollCallback(WMWidget * scroller, void *self)
|
||||
|
||||
floatValue = (floatValue * value) / value;
|
||||
|
||||
newFirst = rint(floatValue * (float)(bPtr->columnCount - bPtr->maxVisibleColumns));
|
||||
newFirst = rint(floatValue * (double)(bPtr->columnCount - bPtr->maxVisibleColumns));
|
||||
|
||||
if (bPtr->firstVisibleColumn != newFirst)
|
||||
scrollToColumn(bPtr, newFirst, False);
|
||||
@@ -781,11 +781,7 @@ WMArray *WMGetBrowserPaths(WMBrowser * bPtr)
|
||||
path = wmalloc(slen);
|
||||
/* ignore first `/' */
|
||||
for (i = 0; i <= column; i++) {
|
||||
if (wstrlcat(path, bPtr->pathSeparator, slen) >= slen) {
|
||||
wfree(path);
|
||||
WMFreeArray(paths);
|
||||
return NULL;
|
||||
}
|
||||
wstrlcat(path, bPtr->pathSeparator, slen);
|
||||
if (i == column) {
|
||||
item = lastItem;
|
||||
} else {
|
||||
@@ -793,10 +789,7 @@ WMArray *WMGetBrowserPaths(WMBrowser * bPtr)
|
||||
}
|
||||
if (!item)
|
||||
break;
|
||||
if (wstrlcat(path, item->text, slen) >= slen) {
|
||||
wfree(path);
|
||||
return NULL;
|
||||
}
|
||||
wstrlcat(path, item->text, slen);
|
||||
}
|
||||
WMAddToArray(paths, path);
|
||||
}
|
||||
|
||||
+33
-4
@@ -17,6 +17,7 @@ typedef struct W_Button {
|
||||
|
||||
W_Pixmap *image;
|
||||
W_Pixmap *altImage;
|
||||
W_Pixmap *tsImage;
|
||||
|
||||
W_Pixmap *dimage;
|
||||
|
||||
@@ -37,7 +38,7 @@ typedef struct W_Button {
|
||||
WMImagePosition imagePosition:4;
|
||||
WMAlignment alignment:2;
|
||||
|
||||
unsigned int selected:1;
|
||||
unsigned int selected:2;
|
||||
|
||||
unsigned int enabled:1;
|
||||
|
||||
@@ -98,7 +99,6 @@ static void handleActionEvents(XEvent * event, void *data);
|
||||
|
||||
static char *WMPushedRadioNotification = "WMPushedRadioNotification";
|
||||
|
||||
#define NFONT(b) (b)->view->screen->normalFont
|
||||
|
||||
WMButton *WMCreateCustomButton(WMWidget * parent, int behaviourMask)
|
||||
{
|
||||
@@ -184,6 +184,14 @@ WMButton *WMCreateButton(WMWidget * parent, WMButtonType type)
|
||||
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);
|
||||
@@ -198,7 +206,7 @@ WMButton *WMCreateButton(WMWidget * parent, WMButtonType type)
|
||||
WMSetButtonText(bPtr, DEFAULT_RADIO_TEXT);
|
||||
bPtr->flags.alignment = DEFAULT_RADIO_ALIGNMENT;
|
||||
bPtr->flags.imagePosition = DEFAULT_RADIO_IMAGE_POSITION;
|
||||
} else if (type == WBTSwitch) {
|
||||
} 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;
|
||||
@@ -325,6 +333,11 @@ void WMSetButtonText(WMButton * bPtr, const char *text)
|
||||
}
|
||||
}
|
||||
|
||||
const char *WMGetButtonText(WMButton *bPtr)
|
||||
{
|
||||
return bPtr->caption;
|
||||
}
|
||||
|
||||
void WMSetButtonAltText(WMButton * bPtr, const char *text)
|
||||
{
|
||||
if (bPtr->altCaption)
|
||||
@@ -367,6 +380,9 @@ void WMSetButtonDisabledTextColor(WMButton * bPtr, WMColor * 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) {
|
||||
@@ -380,6 +396,9 @@ int WMGetButtonSelected(WMButton * bPtr)
|
||||
{
|
||||
CHECK_CLASS(bPtr, WC_Button);
|
||||
|
||||
if ((bPtr->flags.type == WBTTriState) && (bPtr->flags.selected == 2))
|
||||
return -1;
|
||||
|
||||
return bPtr->flags.selected;
|
||||
}
|
||||
|
||||
@@ -554,7 +573,9 @@ static void paintButton(Button * bPtr)
|
||||
if (bPtr->flags.stateChange) {
|
||||
if (bPtr->altCaption)
|
||||
caption = bPtr->altCaption;
|
||||
if (bPtr->altImage)
|
||||
if (bPtr->flags.selected == 2)
|
||||
image = bPtr->tsImage;
|
||||
else if (bPtr->altImage)
|
||||
image = bPtr->altImage;
|
||||
if (bPtr->altTextColor)
|
||||
textColor = bPtr->altTextColor;
|
||||
@@ -655,6 +676,8 @@ static void handleActionEvents(XEvent * event, void *data)
|
||||
|
||||
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;
|
||||
@@ -663,6 +686,9 @@ static void handleActionEvents(XEvent * event, void *data)
|
||||
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;
|
||||
|
||||
@@ -744,5 +770,8 @@ static void destroyButton(Button * bPtr)
|
||||
if (bPtr->altImage)
|
||||
WMReleasePixmap(bPtr->altImage);
|
||||
|
||||
if (bPtr->tsImage)
|
||||
WMReleasePixmap(bPtr->tsImage);
|
||||
|
||||
wfree(bPtr);
|
||||
}
|
||||
|
||||
+27
-26
@@ -67,9 +67,6 @@ static unsigned char Cursor_bits[] = {
|
||||
0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x70
|
||||
};
|
||||
|
||||
/* Cursor shape-mask */
|
||||
#define Cursor_shape_width 32
|
||||
#define Cursor_shape_height 32
|
||||
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,
|
||||
@@ -264,13 +261,7 @@ enum {
|
||||
|
||||
#define COLORWHEEL_PART 1
|
||||
#define CUSTOMPALETTE_PART 2
|
||||
#define BUFSIZE 1024
|
||||
|
||||
#define MAX_LENGTH 1024
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.14159265358979323846
|
||||
#endif
|
||||
|
||||
static char *generateNewFilename(const char *curName);
|
||||
static void convertCPColor(CPColor * color);
|
||||
@@ -721,7 +712,7 @@ static WMColorPanel *makeColorPanel(WMScreen * scrPtr, const char *name)
|
||||
WMAddNotificationObserver(rgbTextFieldCallback, panel, WMTextDidEndEditingNotification, panel->rgbBlueT);
|
||||
|
||||
panel->rgbDecB = WMCreateButton(panel->rgbFrm, WBTRadio);
|
||||
WMSetButtonText(panel->rgbDecB, "Decimal");
|
||||
WMSetButtonText(panel->rgbDecB, _("Decimal"));
|
||||
WMSetButtonSelected(panel->rgbDecB, 1);
|
||||
panel->rgbState = RGBdec;
|
||||
WMSetButtonAction(panel->rgbDecB, rgbDecToHex, panel);
|
||||
@@ -729,7 +720,7 @@ static WMColorPanel *makeColorPanel(WMScreen * scrPtr, const char *name)
|
||||
WMMoveWidget(panel->rgbDecB, 2, 81);
|
||||
|
||||
panel->rgbHexB = WMCreateButton(panel->rgbFrm, WBTRadio);
|
||||
WMSetButtonText(panel->rgbHexB, "Hexadecimal");
|
||||
WMSetButtonText(panel->rgbHexB, _("Hexadecimal"));
|
||||
WMSetButtonAction(panel->rgbHexB, rgbDecToHex, panel);
|
||||
WMResizeWidget(panel->rgbHexB, PWIDTH - 8, 23);
|
||||
WMMoveWidget(panel->rgbHexB, 2, 104);
|
||||
@@ -1954,7 +1945,7 @@ static void wheelInitMatrix(W_ColorPanel * panel)
|
||||
if (sat < 256) {
|
||||
if (xcor != 0)
|
||||
dhue[0] = rint(atan((double)ycor / (double)xcor) *
|
||||
(180.0 / M_PI)) + (xcor < 0 ? 180.0 : 0.0);
|
||||
(180.0 / WM_PI)) + (xcor < 0 ? 180.0 : 0.0);
|
||||
else
|
||||
dhue[0] = 270;
|
||||
|
||||
@@ -2240,7 +2231,7 @@ static void wheelPositionSelectionOutBounds(W_ColorPanel * panel, int x, int y)
|
||||
panel->color.hsv.value = 255 - WMGetSliderValue(panel->wheelBrightnessS);
|
||||
|
||||
if (xcor != 0)
|
||||
hue = rint(atan(-(double)ycor / (double)xcor) * (180.0 / M_PI));
|
||||
hue = rint(atan(-(double)ycor / (double)xcor) * (180.0 / WM_PI));
|
||||
else {
|
||||
if (ycor < 0)
|
||||
hue = 90;
|
||||
@@ -2260,9 +2251,9 @@ static void wheelPositionSelectionOutBounds(W_ColorPanel * panel, int x, int y)
|
||||
|
||||
wheelUndrawSelection(panel);
|
||||
|
||||
panel->colx = 2 + rint((colorWheelSize * (1.0 + cos(panel->color.hsv.hue * (M_PI / 180.0)))) / 2.0);
|
||||
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 * (M_PI / 180.0)))) / 2.0);
|
||||
panel->coly = 2 + rint((colorWheelSize * (1.0 + sin(-panel->color.hsv.hue * (WM_PI / 180.0)))) / 2.0);
|
||||
|
||||
wheelUpdateSelection(panel);
|
||||
cpColor = panel->color;
|
||||
@@ -2394,6 +2385,8 @@ void rgbIntToChar(W_ColorPanel *panel, int *value)
|
||||
case RGBhex:
|
||||
format = "%0X";
|
||||
break;
|
||||
default:
|
||||
format = "";
|
||||
}
|
||||
|
||||
sprintf(tmp, format, value[0]);
|
||||
@@ -2873,8 +2866,6 @@ static void customSetPalette(W_ColorPanel * panel)
|
||||
|
||||
panel->palXRatio = (double)(panel->customPaletteImg->width) / (double)(customPaletteWidth);
|
||||
panel->palYRatio = (double)(panel->customPaletteImg->height) / (double)(customPaletteHeight);
|
||||
|
||||
WMGetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn);
|
||||
}
|
||||
|
||||
static void customPalettePositionSelection(W_ColorPanel * panel, int x, int y)
|
||||
@@ -3360,10 +3351,10 @@ static void wheelInit(W_ColorPanel * panel)
|
||||
|
||||
panel->colx = 2 + rint((colorWheelSize / 2.0) *
|
||||
(1 + (panel->color.hsv.saturation / 255.0) *
|
||||
cos(panel->color.hsv.hue * M_PI / 180.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 * M_PI / 180.0)));
|
||||
sin(-panel->color.hsv.hue * WM_PI / 180.0)));
|
||||
|
||||
wheelCalculateValues(panel, panel->color.hsv.value);
|
||||
|
||||
@@ -3391,6 +3382,7 @@ static void grayInit(W_ColorPanel * panel)
|
||||
static void rgbInit(W_ColorPanel * panel)
|
||||
{
|
||||
char tmp[4];
|
||||
const char *format;
|
||||
|
||||
if (panel->color.set != cpRGB)
|
||||
convertCPColor(&panel->color);
|
||||
@@ -3399,11 +3391,23 @@ static void rgbInit(W_ColorPanel * panel)
|
||||
WMSetSliderValue(panel->rgbGreenS, panel->color.rgb.green);
|
||||
WMSetSliderValue(panel->rgbBlueS, panel->color.rgb.blue);
|
||||
|
||||
sprintf(tmp, "%d", panel->color.rgb.red);
|
||||
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, "%d", panel->color.rgb.green);
|
||||
sprintf(tmp, format, panel->color.rgb.green);
|
||||
WMSetTextFieldText(panel->rgbGreenT, tmp);
|
||||
sprintf(tmp, "%d", panel->color.rgb.blue);
|
||||
sprintf(tmp, format, panel->color.rgb.blue);
|
||||
WMSetTextFieldText(panel->rgbBlueT, tmp);
|
||||
}
|
||||
|
||||
@@ -3449,7 +3453,7 @@ static void hsbInit(W_ColorPanel * panel)
|
||||
WMSetSliderValue(panel->hsbSaturationS, value[1]);
|
||||
WMSetSliderValue(panel->hsbBrightnessS, value[2]);
|
||||
|
||||
sprintf(tmp, "%d", value[0]);
|
||||
sprintf(tmp, "%hu", value[0]);
|
||||
WMSetTextFieldText(panel->hsbHueT, tmp);
|
||||
sprintf(tmp, "%d", value[1]);
|
||||
WMSetTextFieldText(panel->hsbSaturationT, tmp);
|
||||
@@ -3515,9 +3519,6 @@ static void convertCPColor(CPColor * color)
|
||||
}
|
||||
}
|
||||
|
||||
#define ABS_SHIFT(val, shift) \
|
||||
(((shift) > 0) ? (val) >> (shift) : (val) << -(shift))
|
||||
|
||||
static RColor ulongToRColor(WMScreen * scr, unsigned long value)
|
||||
{
|
||||
RColor color;
|
||||
|
||||
+1
-2
@@ -80,7 +80,6 @@ static WMDragDestinationProcs _DragDestinationProcs = {
|
||||
|
||||
#define DEFAULT_WIDTH 60
|
||||
#define DEFAULT_HEIGHT 30
|
||||
#define DEFAULT_BORDER_WIDTH 6
|
||||
|
||||
#define MIN_WIDTH 16
|
||||
#define MIN_HEIGHT 8
|
||||
@@ -212,7 +211,7 @@ static void willResizeColorWell(W_ViewDelegate * self, WMView * view, unsigned i
|
||||
if (*height < MIN_HEIGHT)
|
||||
*height = MIN_HEIGHT;
|
||||
|
||||
bw = (int)((float)WMIN(*width, *height) * 0.24);
|
||||
bw = (int)((float)WMIN(*width, *height) * 0.24F);
|
||||
|
||||
W_ResizeView(cPtr->colorView, *width - 2 * bw, *height - 2 * bw);
|
||||
|
||||
|
||||
+1
-1
@@ -748,7 +748,7 @@ static void goFloppy(WMWidget *widget, void *p_panel)
|
||||
(void) widget;
|
||||
|
||||
if (stat(WINGsConfiguration.floppyPath, &filestat)) {
|
||||
showError(scr, panel->win, _("An error occured browsing '%s'."), WINGsConfiguration.floppyPath);
|
||||
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);
|
||||
|
||||
@@ -12,6 +12,12 @@
|
||||
#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
|
||||
@@ -120,6 +126,14 @@ 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);
|
||||
@@ -156,6 +170,25 @@ WMFont *WMCreateFont(WMScreen * scrPtr, const char *fontName)
|
||||
|
||||
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;
|
||||
@@ -204,6 +237,16 @@ char *WMGetFontName(WMFont * font)
|
||||
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);
|
||||
@@ -252,18 +295,34 @@ WMFont *WMBoldSystemFontOfSize(WMScreen * scrPtr, int size)
|
||||
|
||||
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);
|
||||
|
||||
@@ -275,7 +334,14 @@ void WMDrawString(WMScreen * scr, Drawable d, WMColor * color, WMFont * font, in
|
||||
|
||||
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
|
||||
@@ -284,6 +350,9 @@ WMDrawImageString(WMScreen * scr, Drawable d, WMColor * color, WMColor * backgro
|
||||
{
|
||||
XftColor textColor;
|
||||
XftColor bgColor;
|
||||
#ifdef USE_PANGO
|
||||
const char *previous_text;
|
||||
#endif
|
||||
|
||||
wassertr(font != NULL);
|
||||
|
||||
@@ -303,7 +372,14 @@ WMDrawImageString(WMScreen * scr, Drawable d, WMColor * color, WMColor * backgro
|
||||
|
||||
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)
|
||||
|
||||
+9
-6
@@ -43,8 +43,6 @@ typedef struct W_FontPanel {
|
||||
#define MIN_UPPER_HEIGHT 20
|
||||
#define MIN_LOWER_HEIGHT 140
|
||||
|
||||
#define MAX_FONTS_TO_RETRIEVE 2000
|
||||
|
||||
#define BUTTON_SPACE_HEIGHT 40
|
||||
|
||||
#define MIN_WIDTH 250
|
||||
@@ -701,8 +699,10 @@ static void typefaceClick(WMWidget * w, void *data)
|
||||
WMClearList(panel->sizLs);
|
||||
|
||||
WM_ITERATE_ARRAY(face->sizes, size, i) {
|
||||
if ((uintptr_t)size != 0) {
|
||||
sprintf(buffer, "%li", (uintptr_t)size);
|
||||
if (size != NULL) {
|
||||
int size_int = (intptr_t) size;
|
||||
|
||||
sprintf(buffer, "%i", size_int);
|
||||
|
||||
WMAddListItem(panel->sizLs, buffer);
|
||||
}
|
||||
@@ -800,8 +800,11 @@ static void setFontPanelFontName(FontPanel * panel, const char *family, const ch
|
||||
|
||||
WM_ITERATE_ARRAY(face->sizes, vsize, i) {
|
||||
char buffer[32];
|
||||
if ((uintptr_t)vsize != 0) {
|
||||
sprintf(buffer, "%li", (uintptr_t)vsize);
|
||||
|
||||
if (vsize != NULL) {
|
||||
int size_int = (intptr_t) vsize;
|
||||
|
||||
sprintf(buffer, "%i", size_int);
|
||||
|
||||
WMAddListItem(panel->sizLs, buffer);
|
||||
}
|
||||
|
||||
+87
-15
@@ -97,6 +97,66 @@ 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[] = {
|
||||
"..................",
|
||||
"....##....#### ...",
|
||||
@@ -325,6 +385,7 @@ static void renderPixmap(W_Screen * screen, Pixmap d, Pixmap mask, char **data,
|
||||
if (mask)
|
||||
XDrawPoint(screen->display, mask, screen->monoGC, x, y);
|
||||
|
||||
/* FALLTHRU */
|
||||
case '.':
|
||||
case 'l':
|
||||
XDrawPoint(screen->display, d, lightGC, x, y);
|
||||
@@ -363,10 +424,7 @@ static WMPixmap *makePixmap(W_Screen * sPtr, char **data, int width, int height,
|
||||
}
|
||||
|
||||
#define T_WINGS_IMAGES_FILE RESOURCE_PATH"/Images.tiff"
|
||||
#define T_DEFAULT_OBJECT_ICON_FILE RESOURCE_PATH"/defaultIcon.tiff"
|
||||
|
||||
#define X_WINGS_IMAGES_FILE RESOURCE_PATH"/Images.xpm"
|
||||
#define X_DEFAULT_OBJECT_ICON_FILE RESOURCE_PATH"/defaultIcon.xpm"
|
||||
|
||||
static Bool loadPixmaps(WMScreen * scr)
|
||||
{
|
||||
@@ -474,16 +532,6 @@ static Bool loadPixmaps(WMScreen * scr)
|
||||
|
||||
RReleaseImage(image);
|
||||
|
||||
#if 0
|
||||
scr->defaultObjectIcon = WMCreatePixmapFromFile(scr, T_DEFAULT_OBJECT_ICON_FILE);
|
||||
if (!scr->defaultObjectIcon) {
|
||||
scr->defaultObjectIcon = WMCreatePixmapFromFile(scr, X_DEFAULT_OBJECT_ICON_FILE);
|
||||
}
|
||||
if (!scr->defaultObjectIcon) {
|
||||
wwarning("WINGs: could not load default icon file");
|
||||
return False;
|
||||
}
|
||||
#endif
|
||||
return True;
|
||||
}
|
||||
|
||||
@@ -492,7 +540,7 @@ WMScreen *WMOpenScreen(const char *display)
|
||||
Display *dpy = XOpenDisplay(display);
|
||||
|
||||
if (!dpy) {
|
||||
wwarning("WINGs: could not open display %s", XDisplayName(display));
|
||||
wwarning(_("WINGs: could not open display %s"), XDisplayName(display));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -742,6 +790,15 @@ WMScreen *WMCreateScreenWithRContext(Display * display, int screen, RContext * c
|
||||
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,
|
||||
@@ -888,7 +945,7 @@ void WMSetFocusToWidget(WMWidget * widget)
|
||||
|
||||
/*
|
||||
* WMRealizeWidget-
|
||||
* Realizes the widget and all it's children.
|
||||
* Realizes the widget and all its children.
|
||||
*
|
||||
*/
|
||||
void WMRealizeWidget(WMWidget * w)
|
||||
@@ -960,6 +1017,21 @@ 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));
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#include "wconfig.h"
|
||||
|
||||
#include "WINGsP.h"
|
||||
|
||||
typedef struct W_IMContext {
|
||||
@@ -60,7 +62,7 @@ void W_InitIM(W_Screen * scr)
|
||||
cb.callback = destroyIM_cb;
|
||||
cb.client_data = (XPointer) scr;
|
||||
if (XSetIMValues(scr->imctx->xim, XNDestroyCallback, &cb, NULL))
|
||||
wwarning("could not add destroy callback for input method");
|
||||
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);
|
||||
|
||||
@@ -220,6 +220,13 @@ W_PaintTextAndImage(W_View * view, int wrap, WMColor * textColor, W_Font * font,
|
||||
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
|
||||
@@ -227,6 +234,7 @@ W_PaintTextAndImage(W_View * view, int wrap, WMColor * textColor, W_Font * font,
|
||||
XFillRectangle(screen->display, d, screen->copyGC, 0, 0, view->size.width, view->size.height);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if (relief == WRFlat) {
|
||||
x = 0;
|
||||
|
||||
+287
-7
@@ -89,10 +89,12 @@ WMAlertPanel *WMCreateAlertPanel(WMScreen * scrPtr, WMWindow * owner,
|
||||
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) {
|
||||
@@ -160,6 +162,7 @@ WMAlertPanel *WMCreateAlertPanel(WMScreen * scrPtr, WMWindow * owner,
|
||||
WMFontHeight(scrPtr->normalFont) * 4, 0, 5);
|
||||
WMSetLabelText(panel->mLbl, msg);
|
||||
WMSetLabelTextAlignment(panel->mLbl, WACenter);
|
||||
WMSetLabelFont(panel->mLbl, defaultFont);
|
||||
}
|
||||
|
||||
panel->hbox = WMCreateBox(panel->vbox);
|
||||
@@ -170,13 +173,13 @@ WMAlertPanel *WMCreateAlertPanel(WMScreen * scrPtr, WMWindow * owner,
|
||||
|
||||
/* create buttons */
|
||||
if (otherButton)
|
||||
ow = WMWidthOfString(scrPtr->normalFont, otherButton, strlen(otherButton));
|
||||
ow = WMWidthOfString(defaultFont, otherButton, strlen(otherButton));
|
||||
|
||||
if (alternateButton)
|
||||
aw = WMWidthOfString(scrPtr->normalFont, alternateButton, strlen(alternateButton));
|
||||
aw = WMWidthOfString(defaultFont, alternateButton, strlen(alternateButton));
|
||||
|
||||
if (defaultButton)
|
||||
dw = WMWidthOfString(scrPtr->normalFont, defaultButton, strlen(defaultButton));
|
||||
dw = WMWidthOfString(defaultFont, defaultButton, strlen(defaultButton));
|
||||
|
||||
dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
||||
|
||||
@@ -206,18 +209,187 @@ WMAlertPanel *WMCreateAlertPanel(WMScreen * scrPtr, WMWindow * owner,
|
||||
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);
|
||||
@@ -338,8 +510,10 @@ WMInputPanel *WMCreateInputPanel(WMScreen * scrPtr, WMWindow * owner, const char
|
||||
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)
|
||||
@@ -371,21 +545,23 @@ WMInputPanel *WMCreateInputPanel(WMScreen * scrPtr, WMWindow * owner, const char
|
||||
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(scrPtr->normalFont, cancelButton, strlen(cancelButton));
|
||||
aw = WMWidthOfString(defaultFont, cancelButton, strlen(cancelButton));
|
||||
|
||||
if (okButton)
|
||||
dw = WMWidthOfString(scrPtr->normalFont, okButton, strlen(okButton));
|
||||
dw = WMWidthOfString(defaultFont, okButton, strlen(okButton));
|
||||
|
||||
w = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
||||
if (aw > w)
|
||||
@@ -406,6 +582,7 @@ WMInputPanel *WMCreateInputPanel(WMScreen * scrPtr, WMWindow * owner, const char
|
||||
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
||||
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
||||
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
||||
WMSetButtonFont(panel->defBtn, defaultFont);
|
||||
}
|
||||
if (cancelButton) {
|
||||
x -= w + 10;
|
||||
@@ -415,6 +592,104 @@ WMInputPanel *WMCreateInputPanel(WMScreen * scrPtr, WMWindow * owner, const char
|
||||
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);
|
||||
@@ -457,10 +732,12 @@ 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) {
|
||||
@@ -533,10 +810,10 @@ WMGenericPanel *WMCreateGenericPanel(WMScreen * scrPtr, WMWindow * owner,
|
||||
|
||||
/* create buttons */
|
||||
if (defaultButton)
|
||||
dw = WMWidthOfString(scrPtr->normalFont, defaultButton, strlen(defaultButton));
|
||||
dw = WMWidthOfString(defaultFont, defaultButton, strlen(defaultButton));
|
||||
|
||||
if (alternateButton)
|
||||
aw = WMWidthOfString(scrPtr->normalFont, alternateButton, strlen(alternateButton));
|
||||
aw = WMWidthOfString(defaultFont, alternateButton, strlen(alternateButton));
|
||||
|
||||
dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0);
|
||||
|
||||
@@ -561,6 +838,7 @@ WMGenericPanel *WMCreateGenericPanel(WMScreen * scrPtr, WMWindow * owner,
|
||||
WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow);
|
||||
WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow);
|
||||
WMSetButtonImagePosition(panel->defBtn, WIPRight);
|
||||
WMSetButtonFont(panel->defBtn, defaultFont);
|
||||
}
|
||||
|
||||
WMMapSubwidgets(hbox);
|
||||
@@ -570,5 +848,7 @@ WMGenericPanel *WMCreateGenericPanel(WMScreen * scrPtr, WMWindow * owner,
|
||||
WMRealizeWidget(panel->win);
|
||||
WMMapSubwidgets(panel->win);
|
||||
|
||||
WMReleaseFont(defaultFont);
|
||||
|
||||
return panel;
|
||||
}
|
||||
|
||||
@@ -85,6 +85,9 @@ WMPixmap *WMCreatePixmapFromRImage(WMScreen * scrPtr, RImage * image, int thresh
|
||||
WMPixmap *pixPtr;
|
||||
Pixmap pixmap, mask;
|
||||
|
||||
if (image == NULL)
|
||||
return NULL;
|
||||
|
||||
if (!RConvertImageMask(scrPtr->rcontext, image, &pixmap, &mask, threshold)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+1
-4
@@ -181,10 +181,7 @@ static void drawRulerOnPixmap(Ruler * rPtr)
|
||||
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) {
|
||||
if (j < 10)
|
||||
snprintf(c, 3, "%d", ++j);
|
||||
else
|
||||
snprintf(c, 3, "%2d", ++j);
|
||||
snprintf(c, sizeof(c), "%hu", ++j);
|
||||
WMDrawString(rPtr->view->screen, rPtr->drawBuffer, rPtr->fg,
|
||||
rPtr->font, rPtr->margins.left + 2 + m, 26, c, 2);
|
||||
}
|
||||
|
||||
+9
-11
@@ -64,8 +64,6 @@ typedef struct W_Scroller {
|
||||
} flags;
|
||||
} Scroller;
|
||||
|
||||
#define DEFAULT_HEIGHT 60
|
||||
#define DEFAULT_WIDTH SCROLLER_WIDTH
|
||||
#define DEFAULT_ARROWS_POSITION WSAMinEnd
|
||||
|
||||
#define BUTTON_SIZE ((SCROLLER_WIDTH) - 4)
|
||||
@@ -108,7 +106,7 @@ WMScroller *WMCreateScroller(WMWidget * parent)
|
||||
WMCreateEventHandler(sPtr->view, ExposureMask | StructureNotifyMask
|
||||
| ClientMessageMask, handleEvents, sPtr);
|
||||
|
||||
W_ResizeView(sPtr->view, DEFAULT_WIDTH, DEFAULT_WIDTH);
|
||||
W_ResizeView(sPtr->view, SCROLLER_WIDTH, SCROLLER_WIDTH);
|
||||
sPtr->flags.arrowsPosition = DEFAULT_ARROWS_POSITION;
|
||||
|
||||
WMCreateEventHandler(sPtr->view, ButtonPressMask | ButtonReleaseMask
|
||||
@@ -170,10 +168,10 @@ void WMSetScrollerParameters(WMScroller * sPtr, float floatValue, float knobProp
|
||||
|
||||
assert(!isnan(floatValue));
|
||||
|
||||
if (floatValue < 0.0)
|
||||
sPtr->floatValue = 0.0;
|
||||
else if (floatValue > 1.0)
|
||||
sPtr->floatValue = 1.0;
|
||||
if (floatValue < 0.0F)
|
||||
sPtr->floatValue = 0.0F;
|
||||
else if (floatValue > 1.0F)
|
||||
sPtr->floatValue = 1.0F;
|
||||
else
|
||||
sPtr->floatValue = floatValue;
|
||||
|
||||
@@ -182,9 +180,9 @@ void WMSetScrollerParameters(WMScroller * sPtr, float floatValue, float knobProp
|
||||
sPtr->knobProportion = min_knob_proportion;
|
||||
sPtr->flags.documentFullyVisible = 0;
|
||||
|
||||
} else if (knobProportion >= 1.0) {
|
||||
} else if (knobProportion >= 1.0F) {
|
||||
|
||||
sPtr->knobProportion = 1.0;
|
||||
sPtr->knobProportion = 1.0F;
|
||||
sPtr->flags.documentFullyVisible = 1;
|
||||
|
||||
} else {
|
||||
@@ -346,7 +344,7 @@ static int knobLength(Scroller * sPtr)
|
||||
length -= 2 * (BUTTON_SIZE + 1);
|
||||
}
|
||||
|
||||
tmp = (int)((float)length * sPtr->knobProportion + 0.5);
|
||||
tmp = (int)((float)length * sPtr->knobProportion + 0.5F);
|
||||
/* keep minimum size */
|
||||
if (tmp < BUTTON_SIZE)
|
||||
tmp = BUTTON_SIZE;
|
||||
@@ -420,7 +418,7 @@ static void paintScroller(Scroller * sPtr)
|
||||
length - (int)(knobP + knobL), view->size.height - 4);
|
||||
} else {
|
||||
/* before */
|
||||
if (knobP > 0.0)
|
||||
if (knobP > 0.0F)
|
||||
XFillRectangle(scr->display, d, scr->stippleGC,
|
||||
2, ofs, view->size.width - 4, (int)knobP);
|
||||
|
||||
|
||||
+2
-2
@@ -506,7 +506,7 @@ static void updateScrollerProportion(ScrollView * sPtr)
|
||||
|
||||
prop = (float)sPtr->viewport->size.width / (float)sPtr->contentView->size.width;
|
||||
|
||||
if (oldP < 1.0)
|
||||
if (oldP < 1.0F)
|
||||
value = (prop * oldV) / oldP;
|
||||
else
|
||||
value = 0;
|
||||
@@ -518,7 +518,7 @@ static void updateScrollerProportion(ScrollView * sPtr)
|
||||
|
||||
prop = (float)sPtr->viewport->size.height / (float)sPtr->contentView->size.height;
|
||||
|
||||
if (oldP < 1.0)
|
||||
if (oldP < 1.0F)
|
||||
value = (prop * oldV) / oldP;
|
||||
else
|
||||
value = 0;
|
||||
|
||||
+4
-4
@@ -410,16 +410,16 @@ static void handleActionEvents(XEvent * event, void *data)
|
||||
|
||||
switch (event->type) {
|
||||
case ButtonPress:
|
||||
if (event->xbutton.button == WINGsConfiguration.mouseWheelUp && !sPtr->flags.dragging) {
|
||||
/* Wheel up */
|
||||
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.mouseWheelDown && !sPtr->flags.dragging) {
|
||||
/* Wheel down */
|
||||
} 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) {
|
||||
|
||||
@@ -41,9 +41,6 @@ typedef struct W_SplitView {
|
||||
/* TODO: rewrite --Dan */
|
||||
#define _GetSubviewsCount() WMGetArrayItemCount(sPtr->subviews)
|
||||
|
||||
#define _AddPSubviewStruct(P) \
|
||||
(WMAddToArray(sPtr->subviews,((void*)P)))
|
||||
|
||||
#define _GetPSubviewStructAt(i) \
|
||||
((W_SplitViewSubview*)WMGetFromArray(sPtr->subviews,(i)))
|
||||
|
||||
|
||||
+8
-7
@@ -2061,15 +2061,14 @@ static WMData *requestHandler(WMView * view, Atom selection, Atom target, void *
|
||||
|
||||
_TARGETS = XInternAtom(dpy, "TARGETS", False);
|
||||
if (target == _TARGETS) {
|
||||
Atom *ptr;
|
||||
Atom array[4];
|
||||
|
||||
ptr = wmalloc(4 * sizeof(Atom));
|
||||
ptr[0] = _TARGETS;
|
||||
ptr[1] = XA_STRING;
|
||||
ptr[2] = TEXT;
|
||||
ptr[3] = COMPOUND_TEXT;
|
||||
array[0] = _TARGETS;
|
||||
array[1] = XA_STRING;
|
||||
array[2] = TEXT;
|
||||
array[3] = COMPOUND_TEXT;
|
||||
|
||||
data = WMCreateDataWithBytes(ptr, 4 * 4);
|
||||
data = WMCreateDataWithBytes(&array, sizeof(array));
|
||||
WMSetDataFormat(data, 32);
|
||||
|
||||
*type = target;
|
||||
@@ -2306,6 +2305,7 @@ static void handleTextKeyPress(Text * tPtr, XEvent * event)
|
||||
|
||||
case XK_Return:
|
||||
*buffer = '\n';
|
||||
/* FALLTHRU */
|
||||
default:
|
||||
if (*buffer != 0 && !control_pressed) {
|
||||
insertTextInteractively(tPtr, buffer, strlen(buffer));
|
||||
@@ -2545,6 +2545,7 @@ static void handleActionEvents(XEvent * event, void *data)
|
||||
break;
|
||||
}
|
||||
|
||||
/* FALLTHRU */
|
||||
case ButtonRelease:
|
||||
if (tPtr->flags.pointerGrabbed) {
|
||||
tPtr->flags.pointerGrabbed = False;
|
||||
|
||||
+18
-1
@@ -491,7 +491,7 @@ void WMSetTextFieldAlignment(WMTextField * tPtr, WMAlignment alignment)
|
||||
tPtr->flags.alignment = alignment;
|
||||
|
||||
if (alignment != WALeft) {
|
||||
wwarning("only left alignment is supported in textfields");
|
||||
wwarning(_("only left alignment is supported in textfields"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -965,6 +965,7 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
||||
switch (ksym) {
|
||||
case XK_Tab:
|
||||
#ifdef XK_ISO_Left_Tab
|
||||
/* FALLTHRU */
|
||||
case XK_ISO_Left_Tab:
|
||||
#endif
|
||||
if (!controled) {
|
||||
@@ -1000,6 +1001,11 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef XK_KP_Enter
|
||||
/* FALLTHRU */
|
||||
case XK_KP_Enter:
|
||||
#endif
|
||||
/* FALLTHRU */
|
||||
case XK_Return:
|
||||
if (!modified) {
|
||||
data = (void *)WMReturnTextMovement;
|
||||
@@ -1016,8 +1022,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
||||
controled = False;
|
||||
|
||||
#ifdef XK_KP_Left
|
||||
/* FALLTHRU */
|
||||
case XK_KP_Left:
|
||||
#endif
|
||||
/* FALLTHRU */
|
||||
case XK_Left:
|
||||
if (tPtr->cursorPosition > 0) {
|
||||
int i;
|
||||
@@ -1055,8 +1063,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
||||
controled = False;
|
||||
|
||||
#ifdef XK_KP_Right
|
||||
/* FALLTHRU */
|
||||
case XK_KP_Right:
|
||||
#endif
|
||||
/* FALLTHRU */
|
||||
case XK_Right:
|
||||
if (tPtr->cursorPosition < tPtr->textLen) {
|
||||
int i;
|
||||
@@ -1092,8 +1102,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
||||
controled = False;
|
||||
|
||||
#ifdef XK_KP_Home
|
||||
/* FALLTHRU */
|
||||
case XK_KP_Home:
|
||||
#endif
|
||||
/* FALLTHRU */
|
||||
case XK_Home:
|
||||
if (!controled) {
|
||||
if (tPtr->cursorPosition > 0) {
|
||||
@@ -1119,8 +1131,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
||||
controled = False;
|
||||
|
||||
#ifdef XK_KP_End
|
||||
/* FALLTHRU */
|
||||
case XK_KP_End:
|
||||
#endif
|
||||
/* FALLTHRU */
|
||||
case XK_End:
|
||||
if (!controled) {
|
||||
if (tPtr->cursorPosition < tPtr->textLen) {
|
||||
@@ -1146,6 +1160,7 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
||||
else
|
||||
modified = False;
|
||||
|
||||
/* FALLTHRU */
|
||||
case XK_BackSpace:
|
||||
if (!modified) {
|
||||
if (tPtr->selection.count) {
|
||||
@@ -1174,8 +1189,10 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
|
||||
modified = False;
|
||||
|
||||
#ifdef XK_KP_Delete
|
||||
/* FALLTHRU */
|
||||
case XK_KP_Delete:
|
||||
#endif
|
||||
/* FALLTHRU */
|
||||
case XK_Delete:
|
||||
if (!modified) {
|
||||
if (tPtr->selection.count) {
|
||||
|
||||
+24
-1
@@ -100,7 +100,8 @@ static W_View *createView(W_Screen * screen, W_View * parent)
|
||||
view->attribFlags = CWEventMask | CWBitGravity;
|
||||
view->attribs = defAtts;
|
||||
|
||||
view->attribFlags |= CWBackPixel | CWColormap | CWBorderPixel;
|
||||
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;
|
||||
@@ -188,6 +189,12 @@ void W_RealizeView(W_View * view)
|
||||
}
|
||||
|
||||
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,
|
||||
@@ -483,6 +490,7 @@ void W_SetViewBackgroundColor(W_View * view, WMColor * color)
|
||||
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));
|
||||
@@ -490,6 +498,21 @@ void W_SetViewBackgroundColor(W_View * view, WMColor * color)
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
+18
-37
@@ -1,8 +1,12 @@
|
||||
|
||||
#include <X11/Xmd.h>
|
||||
|
||||
#include "wconfig.h"
|
||||
|
||||
#include "WINGsP.h"
|
||||
|
||||
#include "GNUstep.h"
|
||||
|
||||
#include <X11/Xatom.h>
|
||||
|
||||
typedef struct W_Window {
|
||||
@@ -46,32 +50,6 @@ typedef struct W_Window {
|
||||
} flags;
|
||||
} _Window;
|
||||
|
||||
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
|
||||
|
||||
static void willResizeWindow(W_ViewDelegate *, WMView *, unsigned *, unsigned *);
|
||||
|
||||
@@ -85,7 +63,6 @@ struct W_ViewDelegate _WindowViewDelegate = {
|
||||
|
||||
#define DEFAULT_WIDTH 400
|
||||
#define DEFAULT_HEIGHT 180
|
||||
#define DEFAULT_TITLE ""
|
||||
|
||||
static void destroyWindow(_Window * win);
|
||||
|
||||
@@ -180,7 +157,7 @@ static void setWindowTitle(WMWindow * win, const char *title)
|
||||
|
||||
result = XmbTextListToTextProperty(scr->display, (char **)&title, 1, XStdICCTextStyle, &property);
|
||||
if (result == XNoMemory || result == XLocaleNotSupported) {
|
||||
wwarning("window title conversion error... using STRING encoding");
|
||||
wwarning(_("window title conversion error... using STRING encoding"));
|
||||
XStoreName(scr->display, win->view->window, title);
|
||||
} else {
|
||||
XSetWMName(scr->display, win->view->window, &property);
|
||||
@@ -201,7 +178,7 @@ static void setMiniwindowTitle(WMWindow * win, const char *title)
|
||||
|
||||
result = XmbTextListToTextProperty(scr->display, (char **)&title, 1, XStdICCTextStyle, &property);
|
||||
if (result == XNoMemory || result == XLocaleNotSupported) {
|
||||
wwarning("icon title conversion error..using STRING encoding");
|
||||
wwarning(_("icon title conversion error... using STRING encoding"));
|
||||
XSetIconName(scr->display, win->view->window, title);
|
||||
} else {
|
||||
XSetWMIconName(scr->display, win->view->window, &property);
|
||||
@@ -217,7 +194,7 @@ static void setMiniwindowTitle(WMWindow * win, const char *title)
|
||||
static void setMiniwindow(WMWindow *win, RImage *image)
|
||||
{
|
||||
WMScreen *scr = win->view->screen;
|
||||
long *data;
|
||||
unsigned long *data;
|
||||
int x, y;
|
||||
int o;
|
||||
|
||||
@@ -232,15 +209,19 @@ static void setMiniwindow(WMWindow *win, RImage *image)
|
||||
|
||||
for (y = 0; y < image->height; y++) {
|
||||
for (x = 0; x < image->width; x++) {
|
||||
long pixel;
|
||||
unsigned long pixel;
|
||||
int offs = (x + y * image->width);
|
||||
|
||||
if (image->format == RRGBFormat)
|
||||
pixel = image->data[offs * 3] << 16 | image->data[offs * 3 + 1] << 8
|
||||
| image->data[offs * 3 + 2];
|
||||
else
|
||||
pixel = image->data[offs * 4] << 16 | image->data[offs * 4 + 1] << 8
|
||||
| image->data[offs * 4 + 2] | image->data[offs * 4 + 3] << 24;
|
||||
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;
|
||||
}
|
||||
|
||||
+218
-198
@@ -28,9 +28,119 @@
|
||||
#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;
|
||||
@@ -60,20 +170,20 @@ typedef struct _Panel {
|
||||
WMFrame *colF;
|
||||
|
||||
WMPopUpButton *colP;
|
||||
WMColor *colors[15];
|
||||
WMColor *colors[wlengthof_nocheck(colorOptions)];
|
||||
|
||||
WMColorWell *colW;
|
||||
|
||||
WMColorWell *sampW[24];
|
||||
WMColorWell *sampW[wlengthof_nocheck(sample_colors)];
|
||||
|
||||
/* options */
|
||||
WMFrame *optF;
|
||||
|
||||
WMFrame *mstyF;
|
||||
WMButton *mstyB[3];
|
||||
WMButton *mstyB[wlengthof_nocheck(menu_style)];
|
||||
|
||||
WMFrame *taliF;
|
||||
WMButton *taliB[3];
|
||||
WMButton *taliB[wlengthof_nocheck(wintitle_align)];
|
||||
|
||||
/* */
|
||||
|
||||
@@ -94,9 +204,9 @@ typedef struct _Panel {
|
||||
|
||||
char oldTabItem;
|
||||
|
||||
int menuStyle;
|
||||
menu_style_index menuStyle;
|
||||
|
||||
int titleAlignment;
|
||||
WMAlignment titleAlignment;
|
||||
|
||||
Pixmap preview;
|
||||
Pixmap previewNoText;
|
||||
@@ -151,10 +261,6 @@ static WMTabViewDelegate tabviewDelegate = {
|
||||
#define TEDIT_FILE "tedit"
|
||||
#define TEXTR_FILE "textr"
|
||||
|
||||
#define MSTYLE1_FILE "msty1"
|
||||
#define MSTYLE2_FILE "msty2"
|
||||
#define MSTYLE3_FILE "msty3"
|
||||
|
||||
/* XPM */
|
||||
static char *blueled_xpm[] = {
|
||||
"8 8 17 1",
|
||||
@@ -263,34 +369,6 @@ static char *hand_xpm[] = {
|
||||
" "
|
||||
};
|
||||
|
||||
static char *sampleColors[] = {
|
||||
"black",
|
||||
"#292929",
|
||||
"#525252",
|
||||
"#848484",
|
||||
"#adadad",
|
||||
"#d6d6d6",
|
||||
"white",
|
||||
"#d6d68c",
|
||||
"#d6a57b",
|
||||
"#8cd68c",
|
||||
"#8cd6ce",
|
||||
"#d68c8c",
|
||||
"#8c9cd6",
|
||||
"#bd86d6",
|
||||
"#d68cbd",
|
||||
"#d64a4a",
|
||||
"#4a5ad6",
|
||||
"#4ad6ce",
|
||||
"#4ad65a",
|
||||
"#ced64a",
|
||||
"#d6844a",
|
||||
"#8ad631",
|
||||
"#ce29c6",
|
||||
"#ce2973",
|
||||
"black"
|
||||
};
|
||||
|
||||
static const struct {
|
||||
const char *key;
|
||||
const char *default_value;
|
||||
@@ -345,12 +423,6 @@ enum {
|
||||
TEXPREV_HEIGHT = 24
|
||||
};
|
||||
|
||||
enum {
|
||||
MSTYLE_NORMAL,
|
||||
MSTYLE_SINGLE,
|
||||
MSTYLE_FLAT
|
||||
};
|
||||
|
||||
enum {
|
||||
FTITLE_COL,
|
||||
UTITLE_COL,
|
||||
@@ -369,59 +441,6 @@ enum {
|
||||
CCLIP_COL
|
||||
};
|
||||
|
||||
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 } }
|
||||
};
|
||||
|
||||
|
||||
static void str2rcolor(RContext * rc, const char *name, RColor * color)
|
||||
{
|
||||
@@ -540,10 +559,10 @@ static Pixmap renderTexture(WMScreen * scr, WMPropList * texture, int width, int
|
||||
if (path) {
|
||||
timage = RLoadImage(rc, path, 0);
|
||||
if (!timage)
|
||||
wwarning("could not load file '%s': %s", path, RMessageForError(RErrorCode));
|
||||
wwarning(_("could not load file '%s': %s"), path, RMessageForError(RErrorCode));
|
||||
wfree(path);
|
||||
} else {
|
||||
wwarning("could not find file '%s' for %s of texture", str, type);
|
||||
wwarning(_("could not find file '%s' for texture type %s"), str, type);
|
||||
timage = NULL;
|
||||
}
|
||||
if (!timage) {
|
||||
@@ -591,7 +610,8 @@ static Pixmap renderTexture(WMScreen * scr, WMPropList * texture, int width, int
|
||||
style = RHorizontalGradient;
|
||||
break;
|
||||
default:
|
||||
wwarning("unknow direction in '%s', falling back to diagonal", type);
|
||||
wwarning(_("unknown direction in '%s', falling back to diagonal"), type);
|
||||
/* FALLTHRU */
|
||||
case 'D':
|
||||
style = RDiagonalGradient;
|
||||
break;
|
||||
@@ -617,7 +637,8 @@ static Pixmap renderTexture(WMScreen * scr, WMPropList * texture, int width, int
|
||||
style = RHorizontalGradient;
|
||||
break;
|
||||
default:
|
||||
wwarning("unknow direction in '%s', falling back to diagonal", type);
|
||||
wwarning(_("unknown direction in '%s', falling back to diagonal"), type);
|
||||
/* FALLTHRU */
|
||||
case 'D':
|
||||
style = RDiagonalGradient;
|
||||
break;
|
||||
@@ -651,7 +672,8 @@ static Pixmap renderTexture(WMScreen * scr, WMPropList * texture, int width, int
|
||||
style = RHorizontalGradient;
|
||||
break;
|
||||
default:
|
||||
wwarning("unknow direction in '%s', falling back to diagonal", type);
|
||||
wwarning(_("unknown direction in '%s', falling back to diagonal"), type);
|
||||
/* FALLTHRU */
|
||||
case 'D':
|
||||
style = RDiagonalGradient;
|
||||
break;
|
||||
@@ -698,7 +720,7 @@ static Pixmap renderTexture(WMScreen * scr, WMPropList * texture, int width, int
|
||||
break;
|
||||
|
||||
default:
|
||||
wwarning("type '%s' in not a supported type for a texture", type);
|
||||
wwarning(_("type '%s' is not a supported type for a texture"), type);
|
||||
RReleaseImage(timage);
|
||||
return None;
|
||||
}
|
||||
@@ -1066,7 +1088,7 @@ static void deleteTexture(WMWidget * w, void *data)
|
||||
WMReleasePropList(titem->prop);
|
||||
if (titem->path) {
|
||||
if (remove(titem->path) < 0 && errno != ENOENT) {
|
||||
werror("could not remove file %s", titem->path);
|
||||
werror(_("could not remove file %s"), titem->path);
|
||||
}
|
||||
wfree(titem->path);
|
||||
}
|
||||
@@ -1291,10 +1313,22 @@ static Pixmap loadRImage(WMScreen * scr, const char *path)
|
||||
|
||||
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);
|
||||
@@ -1353,8 +1387,8 @@ static void fillColorList(_Panel * panel)
|
||||
|
||||
list = WMGetUDObjectForKey(udb, "ColorList");
|
||||
if (!list) {
|
||||
for (i = 0; i < 24; i++) {
|
||||
color = WMCreateNamedColor(scr, sampleColors[i], False);
|
||||
for (i = 0; i < wlengthof(sample_colors); i++) {
|
||||
color = WMCreateNamedColor(scr, sample_colors[i], False);
|
||||
if (!color)
|
||||
continue;
|
||||
WMSetColorWellColor(panel->sampW[i], color);
|
||||
@@ -1363,7 +1397,7 @@ static void fillColorList(_Panel * panel)
|
||||
} else {
|
||||
WMPropList *c;
|
||||
|
||||
for (i = 0; i < WMIN(24, WMGetPropListItemCount(list)); i++) {
|
||||
for (i = 0; i < WMIN(wlengthof(sample_colors), WMGetPropListItemCount(list)); i++) {
|
||||
c = WMGetFromPLArray(list, i);
|
||||
if (!c || !WMIsPLString(c))
|
||||
continue;
|
||||
@@ -1593,6 +1627,8 @@ static void updateColorPreviewBox(_Panel * panel, int elements)
|
||||
panel->smallFont, 155, 130, 64, 13, WALeft,
|
||||
_("Icon Text"));
|
||||
|
||||
WMReleaseColor(light);
|
||||
WMReleaseColor(dim);
|
||||
}
|
||||
|
||||
if (elements & (1 << CLIP_COL) || elements & (1 << CCLIP_COL)) {
|
||||
@@ -1749,39 +1785,33 @@ static void changedTabItem(struct WMTabViewDelegate *self, WMTabView * tabView,
|
||||
static void menuStyleCallback(WMWidget * self, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel *) data;
|
||||
menu_style_index i;
|
||||
|
||||
if (self == panel->mstyB[0]) {
|
||||
panel->menuStyle = MSTYLE_NORMAL;
|
||||
updatePreviewBox(panel, 1 << PMITEM);
|
||||
|
||||
} else if (self == panel->mstyB[1]) {
|
||||
panel->menuStyle = MSTYLE_SINGLE;
|
||||
updatePreviewBox(panel, 1 << PMITEM);
|
||||
|
||||
} else if (self == panel->mstyB[2]) {
|
||||
panel->menuStyle = MSTYLE_FLAT;
|
||||
updatePreviewBox(panel, 1 << PMITEM);
|
||||
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;
|
||||
|
||||
if (self == panel->taliB[0]) {
|
||||
panel->titleAlignment = WALeft;
|
||||
updatePreviewBox(panel, 1 << PFOCUSED | 1 << PUNFOCUSED | 1 << POWNER);
|
||||
|
||||
} else if (self == panel->taliB[1]) {
|
||||
panel->titleAlignment = WACenter;
|
||||
updatePreviewBox(panel, 1 << PFOCUSED | 1 << PUNFOCUSED | 1 << POWNER);
|
||||
|
||||
} else if (self == panel->taliB[2]) {
|
||||
panel->titleAlignment = WARight;
|
||||
updatePreviewBox(panel, 1 << PFOCUSED | 1 << PUNFOCUSED | 1 << POWNER);
|
||||
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;
|
||||
@@ -1952,13 +1982,31 @@ static void createPanel(Panel * p)
|
||||
WMMoveWidget(panel->colW, 30, 75);
|
||||
WMAddNotificationObserver(colorWellObserver, panel, WMColorWellDidChangeNotification, panel->colW);
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
int j;
|
||||
for (j = 0; j < 6; j++) {
|
||||
panel->sampW[i + j * 4] = WMCreateColorWell(panel->colF);
|
||||
WMResizeWidget(panel->sampW[i + j * 4], 22, 22);
|
||||
WMMoveWidget(panel->sampW[i + j * 4], 130 + i * 22, 40 + j * 22);
|
||||
WSetColorWellBordered(panel->sampW[i + j * 4], False);
|
||||
{ /* 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1979,7 +2027,7 @@ static void createPanel(Panel * p)
|
||||
WMMoveWidget(panel->mstyF, 15, 10);
|
||||
WMSetFrameTitle(panel->mstyF, _("Menu Style"));
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
for (i = 0; i < wlengthof(menu_style); i++) {
|
||||
WMPixmap *icon;
|
||||
char *path;
|
||||
|
||||
@@ -1988,17 +2036,7 @@ static void createPanel(Panel * p)
|
||||
WMMoveWidget(panel->mstyB[i], 15 + i * 65, 20);
|
||||
WMSetButtonImagePosition(panel->mstyB[i], WIPImageOnly);
|
||||
WMSetButtonAction(panel->mstyB[i], menuStyleCallback, panel);
|
||||
switch (i) {
|
||||
case 0:
|
||||
path = LocateImage(MSTYLE1_FILE);
|
||||
break;
|
||||
case 1:
|
||||
path = LocateImage(MSTYLE2_FILE);
|
||||
break;
|
||||
case 2:
|
||||
path = LocateImage(MSTYLE3_FILE);
|
||||
break;
|
||||
}
|
||||
path = LocateImage(menu_style[i].file_name);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
@@ -2020,20 +2058,10 @@ static void createPanel(Panel * p)
|
||||
WMMoveWidget(panel->taliF, 15, 100);
|
||||
WMSetFrameTitle(panel->taliF, _("Title Alignment"));
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
for (i = 0; i < wlengthof(wintitle_align); i++) {
|
||||
panel->taliB[i] = WMCreateRadioButton(panel->taliF);
|
||||
WMSetButtonAction(panel->taliB[i], titleAlignCallback, panel);
|
||||
switch (i) {
|
||||
case 0:
|
||||
WMSetButtonText(panel->taliB[i], _("Left"));
|
||||
break;
|
||||
case 1:
|
||||
WMSetButtonText(panel->taliB[i], _("Center"));
|
||||
break;
|
||||
case 2:
|
||||
WMSetButtonText(panel->taliB[i], _("Right"));
|
||||
break;
|
||||
}
|
||||
WMSetButtonText(panel->taliB[i], _(wintitle_align[i].label));
|
||||
WMResizeWidget(panel->taliB[i], 90, 18);
|
||||
WMMoveWidget(panel->taliB[i], 10, 15 + 20 * i);
|
||||
}
|
||||
@@ -2093,21 +2121,27 @@ static void showData(_Panel * panel)
|
||||
const char *str;
|
||||
|
||||
str = GetStringForKey("MenuStyle");
|
||||
if (str && strcasecmp(str, "flat") == 0) {
|
||||
panel->menuStyle = MSTYLE_FLAT;
|
||||
} else if (str && strcasecmp(str, "singletexture") == 0) {
|
||||
panel->menuStyle = MSTYLE_SINGLE;
|
||||
} else {
|
||||
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");
|
||||
if (str && strcasecmp(str, "left") == 0) {
|
||||
panel->titleAlignment = WALeft;
|
||||
} else if (str && strcasecmp(str, "right") == 0) {
|
||||
panel->titleAlignment = WARight;
|
||||
} else {
|
||||
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++) {
|
||||
@@ -2159,30 +2193,8 @@ static void storeData(_Panel * panel)
|
||||
}
|
||||
}
|
||||
|
||||
switch (panel->menuStyle) {
|
||||
case MSTYLE_SINGLE:
|
||||
SetStringForKey("singletexture", "MenuStyle");
|
||||
break;
|
||||
case MSTYLE_FLAT:
|
||||
SetStringForKey("flat", "MenuStyle");
|
||||
break;
|
||||
default:
|
||||
case MSTYLE_NORMAL:
|
||||
SetStringForKey("normal", "MenuStyle");
|
||||
break;
|
||||
}
|
||||
switch (panel->titleAlignment) {
|
||||
case WALeft:
|
||||
SetStringForKey("left", "TitleJustify");
|
||||
break;
|
||||
case WARight:
|
||||
SetStringForKey("right", "TitleJustify");
|
||||
break;
|
||||
default:
|
||||
case WACenter:
|
||||
SetStringForKey("center", "TitleJustify");
|
||||
break;
|
||||
}
|
||||
SetStringForKey(menu_style[panel->menuStyle].db_value, "MenuStyle");
|
||||
SetStringForKey(wintitle_align[panel->titleAlignment].db_value, "TitleJustify");
|
||||
}
|
||||
|
||||
static void prepareForClose(_Panel * panel)
|
||||
@@ -2198,11 +2210,16 @@ static void prepareForClose(_Panel * panel)
|
||||
|
||||
/* 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;
|
||||
|
||||
texture = WMCreatePLArray(WMCreatePLString(titem->title),
|
||||
WMRetainPropList(titem->prop), WMCreatePLString(titem->path), NULL);
|
||||
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);
|
||||
}
|
||||
@@ -2212,14 +2229,17 @@ static void prepareForClose(_Panel * panel)
|
||||
|
||||
/* store list of colors */
|
||||
textureList = WMCreatePLArray(NULL, NULL);
|
||||
for (i = 0; i < 24; i++) {
|
||||
for (i = 0; i < wlengthof(sample_colors); i++) {
|
||||
WMColor *color;
|
||||
char *str;
|
||||
WMPropList *pl_color;
|
||||
|
||||
color = WMGetColorWellColor(panel->sampW[i]);
|
||||
|
||||
str = WMGetColorRGBDescription(color);
|
||||
WMAddToPLArray(textureList, WMCreatePLString(str));
|
||||
pl_color = WMCreatePLString(str);
|
||||
WMAddToPLArray(textureList, pl_color);
|
||||
WMReleasePropList(pl_color);
|
||||
wfree(str);
|
||||
}
|
||||
WMSetUDObjectForKey(udb, textureList, "ColorList");
|
||||
|
||||
+61
-70
@@ -21,6 +21,37 @@
|
||||
|
||||
#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;
|
||||
|
||||
@@ -32,14 +63,14 @@ typedef struct _Panel {
|
||||
|
||||
WMWidget *parent;
|
||||
|
||||
WMFrame *autoDelayF[2];
|
||||
WMLabel *autoDelayL[4];
|
||||
WMButton *autoDelayB[4][5];
|
||||
WMTextField *autoDelayT[4];
|
||||
WMLabel *autoDelayMsL[4];
|
||||
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[3];
|
||||
WMButton *docksB[wlengthof_nocheck(dock_config)];
|
||||
} _Panel;
|
||||
|
||||
#define ICON_FILE "dockclipdrawersection"
|
||||
@@ -48,28 +79,6 @@ typedef struct _Panel {
|
||||
#define DELAY_ICON "timer%i"
|
||||
#define DELAY_ICON_S "timer%is"
|
||||
|
||||
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-raise") },
|
||||
{ "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;
|
||||
} dock_config[] = {
|
||||
{ "DisableDock", "dock" },
|
||||
{ "DisableClip", "clip" },
|
||||
{ "DisableDrawers", "drawer" }
|
||||
};
|
||||
|
||||
static void showData(_Panel *panel);
|
||||
static void storeData(_Panel *panel);
|
||||
|
||||
@@ -78,9 +87,9 @@ static void pushAutoDelayButton(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel *) data;
|
||||
int i, j;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < wlengthof(auto_delay); i++)
|
||||
{
|
||||
for (j = 0; j < 5; j++)
|
||||
for (j = 0; j < wlengthof(autoDelayPresetValues); j++)
|
||||
{
|
||||
if (w == panel->autoDelayB[i][j])
|
||||
{
|
||||
@@ -98,7 +107,7 @@ static void adjustButtonSelectionBasedOnValue(_Panel *panel, int row, const char
|
||||
if (!value)
|
||||
return;
|
||||
|
||||
for (j = 0; j < 5; j++)
|
||||
for (j = 0; j < wlengthof(autoDelayPresetValues); j++)
|
||||
{
|
||||
int isThatOne = !strcmp(autoDelayPresetValues[j], value);
|
||||
WMSetButtonSelected(panel->autoDelayB[row][j], isThatOne);
|
||||
@@ -112,7 +121,7 @@ static void autoDelayChanged(void *observerData, WMNotification *notification)
|
||||
_Panel *panel = (_Panel *) observerData;
|
||||
int row;
|
||||
WMTextField *anAutoDelayT = (WMTextField *) WMGetNotificationObject(notification);
|
||||
for (row = 0; row < 4; row++)
|
||||
for (row = 0; row < wlengthof(panel->autoDelayT); row++)
|
||||
{
|
||||
if (anAutoDelayT != panel->autoDelayT[row])
|
||||
{
|
||||
@@ -170,29 +179,25 @@ static void createPanel(Panel *p)
|
||||
buf1 = wmalloc(strlen(DELAY_ICON) + 1);
|
||||
buf2 = wmalloc(strlen(DELAY_ICON_S) + 1);
|
||||
|
||||
for (k = 0; k < 2; k++)
|
||||
for (k = 0; k < wlengthof(clip_delay_frame_titles); k++)
|
||||
{
|
||||
panel->autoDelayF[k] = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->autoDelayF[k], 370, 100);
|
||||
WMMoveWidget(panel->autoDelayF[k], 15, 10 + k * 110);
|
||||
if (k == 0)
|
||||
WMSetFrameTitle(panel->autoDelayF[k], _("Clip autocollapsing delays"));
|
||||
else
|
||||
WMSetFrameTitle(panel->autoDelayF[k], _("Clip autoraising delays"));
|
||||
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], 155, 20);
|
||||
WMMoveWidget(panel->autoDelayL[i + k * 2], 10, 27 + 40 * i);
|
||||
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));
|
||||
/* WMSetLabelTextAlignment(panel->autoDelayL[i + k * 2], WARight); */
|
||||
|
||||
for (j = 0; j < 5; j++)
|
||||
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], 145 + (28 * j), 25 + 40 * i);
|
||||
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);
|
||||
@@ -217,16 +222,16 @@ static void createPanel(Panel *p)
|
||||
}
|
||||
|
||||
panel->autoDelayT[i + k * 2] = WMCreateTextField(panel->autoDelayF[k]);
|
||||
WMResizeWidget(panel->autoDelayT[i + k * 2], 36, 20);
|
||||
WMMoveWidget(panel->autoDelayT[i + k * 2], 287, 27 + 40 * i);
|
||||
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], 36, 16);
|
||||
WMMoveWidget(panel->autoDelayMsL[i + k * 2], 327, 33 + 40 *i);
|
||||
WMSetLabelText(panel->autoDelayMsL[i + k * 2], _("msec"));
|
||||
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);
|
||||
@@ -241,10 +246,10 @@ static void createPanel(Panel *p)
|
||||
/***************** Enable/disable clip/dock/drawers *****************/
|
||||
panel->dockF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->dockF, 115, 210);
|
||||
WMMoveWidget(panel->dockF, 390, 10);
|
||||
WMMoveWidget(panel->dockF, 394, 10);
|
||||
WMSetFrameTitle(panel->dockF, _("Dock/Clip/Drawer"));
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < wlengthof(dock_config); i++)
|
||||
{
|
||||
panel->docksB[i] = WMCreateButton(panel->dockF, WBTToggle);
|
||||
WMResizeWidget(panel->docksB[i], 56, 56);
|
||||
@@ -259,21 +264,7 @@ static void createPanel(Panel *p)
|
||||
WMSetButtonAltImage(panel->docksB[i], icon1);
|
||||
WMReleasePixmap(icon1);
|
||||
}
|
||||
switch(i)
|
||||
{
|
||||
case 0:
|
||||
WMSetBalloonTextForView(_("Disable/enable the application Dock (the\n"
|
||||
"vertical icon bar in the side of the screen)."), WMWidgetView(panel->docksB[i]));
|
||||
break;
|
||||
case 1:
|
||||
WMSetBalloonTextForView(_("Disable/enable the Clip (that thing with\n"
|
||||
"a paper clip icon)."), WMWidgetView(panel->docksB[i]));
|
||||
break;
|
||||
case 2:
|
||||
WMSetBalloonTextForView(_("Disable/enable Drawers (a dock that stores\n"
|
||||
"application icons horizontally). The dock is required."), WMWidgetView(panel->docksB[i]));
|
||||
break;
|
||||
}
|
||||
WMSetBalloonTextForView(_(dock_config[i].balloon_text), WMWidgetView(panel->docksB[i]));
|
||||
WMSetButtonAction(panel->docksB[i], pushDockButton, panel);
|
||||
}
|
||||
|
||||
@@ -291,7 +282,7 @@ static void createPanel(Panel *p)
|
||||
static void storeData(_Panel *panel)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < wlengthof(auto_delay); i++)
|
||||
{
|
||||
char *str;
|
||||
|
||||
@@ -299,7 +290,7 @@ static void storeData(_Panel *panel)
|
||||
SetStringForKey(str, auto_delay[i].key);
|
||||
wfree(str);
|
||||
}
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < wlengthof(dock_config); i++)
|
||||
{
|
||||
SetBoolForKey(!WMGetButtonSelected(panel->docksB[i]), dock_config[i].disable_key);
|
||||
}
|
||||
@@ -309,13 +300,13 @@ static void showData(_Panel *panel)
|
||||
{
|
||||
char *value;
|
||||
int i;
|
||||
for (i = 0; i < 4; 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 < 3; i++)
|
||||
for (i = 0; i < wlengthof(dock_config); i++)
|
||||
{
|
||||
WMSetButtonSelected(panel->docksB[i], !GetBoolForKey(dock_config[i].disable_key));
|
||||
}
|
||||
|
||||
+129
-3
@@ -33,7 +33,8 @@ static const struct {
|
||||
enum {
|
||||
OPTION_WMAKER,
|
||||
OPTION_WMAKER_ARRAY,
|
||||
OPTION_USERDEF
|
||||
OPTION_USERDEF,
|
||||
OPTION_WMAKER_INT
|
||||
} class;
|
||||
|
||||
const char *op_name; /* The identifier for the option in the config file */
|
||||
@@ -43,6 +44,12 @@ static const struct {
|
||||
{ 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" },
|
||||
|
||||
@@ -78,12 +85,46 @@ static const struct {
|
||||
|
||||
#ifdef XKB_MODELOCK
|
||||
{ N_("Enable keyboard language switch button in window titlebars."),
|
||||
/* default: */ False, OPTION_WMAKER, "KbdModeLock" }
|
||||
/* 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" },
|
||||
|
||||
{ N_("Double click on titlebar maximize a window to full screen."),
|
||||
/* default: */ False, OPTION_WMAKER, "DbClickFullScreen" },
|
||||
|
||||
{ N_("Close rootmenu when mouse (left or right) is clicked outside focus."),
|
||||
/* default: */ False, OPTION_WMAKER, "CloseRootMenuByLeftOrRightMouseClick" }
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
typedef struct _Panel {
|
||||
WMBox *box;
|
||||
char *sectionName;
|
||||
@@ -94,12 +135,39 @@ typedef struct _Panel {
|
||||
|
||||
WMWidget *parent;
|
||||
|
||||
WMButton *swi[sizeof(expert_options) / sizeof(expert_options[0])];
|
||||
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)
|
||||
{
|
||||
@@ -125,11 +193,13 @@ static void createPanel(Panel *p)
|
||||
|
||||
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:
|
||||
@@ -151,6 +221,49 @@ static void createPanel(Panel *p)
|
||||
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",
|
||||
@@ -159,6 +272,7 @@ static void createPanel(Panel *p)
|
||||
state = expert_options[i].def_state;
|
||||
break;
|
||||
}
|
||||
if (expert_options[i].class != OPTION_WMAKER_INT)
|
||||
WMSetButtonSelected(panel->swi[i], state);
|
||||
}
|
||||
|
||||
@@ -192,6 +306,18 @@ static void storeDefaults(_Panel *panel)
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+27
-18
@@ -205,13 +205,13 @@ static void createPanel(Panel * p)
|
||||
|
||||
panel->kfocB[0] = WMCreateRadioButton(box);
|
||||
WMSetButtonText(panel->kfocB[0], _("Manual: Click on the window to set "
|
||||
"keyboard input focus."));
|
||||
"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."));
|
||||
"the window under the mouse pointer"));
|
||||
WMAddBoxSubview(box, WMWidgetView(panel->kfocB[1]), True, True, 20, 0, 0);
|
||||
|
||||
WMMapSubwidgets(box);
|
||||
@@ -223,17 +223,26 @@ static void createPanel(Panel * p)
|
||||
panel->cfocF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->cfocF, 240, 77);
|
||||
WMMoveWidget(panel->cfocF, 15, 143);
|
||||
WMSetFrameTitle(panel->cfocF, _("Install colormap in the window..."));
|
||||
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, 225, 20);
|
||||
WMMoveWidget(panel->manB, 10, 20);
|
||||
WMSetButtonText(panel->manB, _("...that has the input focus."));
|
||||
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, 225, 20);
|
||||
WMMoveWidget(panel->autB, 10, 45);
|
||||
WMSetButtonText(panel->autB, _("...that's under the mouse pointer."));
|
||||
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);
|
||||
@@ -297,7 +306,7 @@ static void createPanel(Panel * p)
|
||||
panel->raisL = WMCreateLabel(panel->raisF);
|
||||
WMResizeWidget(panel->raisL, 36, 16);
|
||||
WMMoveWidget(panel->raisL, 205, 32);
|
||||
WMSetLabelText(panel->raisL, _("msec"));
|
||||
WMSetLabelText(panel->raisL, _("ms"));
|
||||
WMSetLabelTextColor(panel->raisL, color);
|
||||
WMSetLabelFont(panel->raisL, font);
|
||||
|
||||
@@ -312,19 +321,19 @@ static void createPanel(Panel * p)
|
||||
WMMoveWidget(panel->optF, 265, 88);
|
||||
|
||||
panel->ignB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->ignB, 225, 50);
|
||||
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."));
|
||||
WMSetButtonText(panel->ignB, _("Do not let applications receive the click used to focus windows"));
|
||||
|
||||
panel->newB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->newB, 225, 35);
|
||||
WMMoveWidget(panel->newB, 10, 49);
|
||||
WMSetButtonText(panel->newB, _("Automatically focus new windows."));
|
||||
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, 225, 36);
|
||||
WMMoveWidget(panel->craisB, 10, 85);
|
||||
WMSetButtonText(panel->craisB, _("Raise window when switching\nfocus with keyboard."));
|
||||
WMResizeWidget(panel->craisB, 228, 36);
|
||||
WMMoveWidget(panel->craisB, 10, 87);
|
||||
WMSetButtonText(panel->craisB, _("Raise window when switching focus with keyboard"));
|
||||
|
||||
WMMapSubwidgets(panel->optF);
|
||||
|
||||
|
||||
+10
-13
@@ -22,6 +22,7 @@
|
||||
#include "WPrefs.h"
|
||||
#include <unistd.h>
|
||||
#include <fontconfig/fontconfig.h>
|
||||
#include <math.h>
|
||||
|
||||
/* workaround for older fontconfig, that doesn't define these constants */
|
||||
#ifndef FC_WEIGHT_NORMAL
|
||||
@@ -521,7 +522,7 @@ static void selectedOption(WMWidget * w, void *data)
|
||||
WMListItem *item = WMGetListItem(panel->sizeL, i);
|
||||
int distance;
|
||||
|
||||
distance = abs(size - atoi(item->text));
|
||||
distance = fabs(size - atoi(item->text));
|
||||
|
||||
if (i == 0 || distance < closest) {
|
||||
closest = distance;
|
||||
@@ -569,6 +570,9 @@ 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;
|
||||
@@ -579,19 +583,12 @@ static void showData(_Panel * panel)
|
||||
if (ofont)
|
||||
wfree(ofont);
|
||||
|
||||
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);
|
||||
font = WMGetUDStringForKey(defaults,
|
||||
fontOptions[i].option);
|
||||
} else {
|
||||
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);
|
||||
|
||||
+255
-112
@@ -21,6 +21,36 @@
|
||||
|
||||
#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;
|
||||
|
||||
@@ -36,15 +66,26 @@ typedef struct _Panel {
|
||||
WMFrame *posVF;
|
||||
WMFrame *posV;
|
||||
|
||||
WMButton *posB[8];
|
||||
struct {
|
||||
int width, height;
|
||||
} icon_position;
|
||||
|
||||
WMButton *posB[wlengthof_nocheck(icon_position_dbvalue)];
|
||||
|
||||
WMFrame *animF;
|
||||
WMButton *animB[4];
|
||||
WMPopUpButton *animP;
|
||||
|
||||
WMFrame *optF;
|
||||
WMButton *arrB;
|
||||
WMButton *omnB;
|
||||
WMButton *sclB;
|
||||
WMButton *marginB;
|
||||
|
||||
struct {
|
||||
WMFrame *frame;
|
||||
WMSlider *slider;
|
||||
WMLabel *label;
|
||||
} minipreview;
|
||||
|
||||
WMFrame *sizeF;
|
||||
WMPopUpButton *sizeP;
|
||||
@@ -52,6 +93,16 @@ typedef struct _Panel {
|
||||
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)
|
||||
@@ -60,7 +111,7 @@ static void showIconLayout(WMWidget * widget, void *data)
|
||||
int w, h;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
for (i = 0; i < wlengthof(panel->posB); i++) {
|
||||
if (panel->posB[i] == widget) {
|
||||
panel->iconPos = i;
|
||||
break;
|
||||
@@ -81,50 +132,63 @@ static void showIconLayout(WMWidget * widget, void *data)
|
||||
WMMoveWidget(panel->posV, 2, 2);
|
||||
break;
|
||||
case 2:
|
||||
WMMoveWidget(panel->posV, 95 - 2 - w, 2);
|
||||
WMMoveWidget(panel->posV, panel->icon_position.width - 2 - w, 2);
|
||||
break;
|
||||
case 4:
|
||||
WMMoveWidget(panel->posV, 2, 70 - 2 - h);
|
||||
WMMoveWidget(panel->posV, 2, panel->icon_position.height - 2 - h);
|
||||
break;
|
||||
default:
|
||||
WMMoveWidget(panel->posV, 95 - 2 - w, 70 - 2 - h);
|
||||
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;
|
||||
char *def = "blh";
|
||||
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)
|
||||
str = def;
|
||||
if (strlen(str) != 3) {
|
||||
wwarning("bad value %s for option IconPosition. Using default blh", str);
|
||||
str = def;
|
||||
}
|
||||
|
||||
if (str[0] == 't' || str[0] == 'T') {
|
||||
i = 0;
|
||||
} else {
|
||||
i = 4;
|
||||
}
|
||||
if (str[1] == 'r' || str[1] == 'R') {
|
||||
i += 2;
|
||||
}
|
||||
if (str[2] == 'v' || str[2] == 'V') {
|
||||
i += 0;
|
||||
} else {
|
||||
i += 1;
|
||||
}
|
||||
if (str != NULL) {
|
||||
for (i = 0; i < wlengthof(icon_position_dbvalue); i++)
|
||||
if (strcmp(str, icon_position_dbvalue[i]) == 0) {
|
||||
panel->iconPos = i;
|
||||
WMPerformButtonClick(panel->posB[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;
|
||||
@@ -135,67 +199,125 @@ static void showData(_Panel * panel)
|
||||
i = 9;
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, i);
|
||||
|
||||
str = GetStringForKey("IconificationStyle");
|
||||
if (!str)
|
||||
str = "zoom";
|
||||
if (strcasecmp(str, "none") == 0)
|
||||
WMPerformButtonClick(panel->animB[3]);
|
||||
else if (strcasecmp(str, "twist") == 0)
|
||||
WMPerformButtonClick(panel->animB[1]);
|
||||
else if (strcasecmp(str, "flip") == 0)
|
||||
WMPerformButtonClick(panel->animB[2]);
|
||||
else {
|
||||
WMPerformButtonClick(panel->animB[0]);
|
||||
/* 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, 210, 140);
|
||||
WMMoveWidget(panel->posF, 20, 10);
|
||||
WMResizeWidget(panel->posF, 268, 155);
|
||||
WMMoveWidget(panel->posF, 12, 6);
|
||||
WMSetFrameTitle(panel->posF, _("Icon Positioning"));
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
WMMoveWidget(panel->posB[1], 58, 25);
|
||||
WMResizeWidget(panel->posB[1], 47, 15);
|
||||
WMMoveWidget(panel->posB[3], 58 + 47, 25);
|
||||
WMResizeWidget(panel->posB[3], 47, 15);
|
||||
WMResizeWidget(panel->posB[i], w, h);
|
||||
|
||||
WMMoveWidget(panel->posB[0], 43, 40);
|
||||
WMResizeWidget(panel->posB[0], 15, 35);
|
||||
WMMoveWidget(panel->posB[4], 43, 40 + 35);
|
||||
WMResizeWidget(panel->posB[4], 15, 35);
|
||||
|
||||
WMMoveWidget(panel->posB[5], 58, 40 + 70);
|
||||
WMResizeWidget(panel->posB[5], 47, 15);
|
||||
WMMoveWidget(panel->posB[7], 58 + 47, 40 + 70);
|
||||
WMResizeWidget(panel->posB[7], 47, 15);
|
||||
|
||||
WMMoveWidget(panel->posB[2], 58 + 95, 40);
|
||||
WMResizeWidget(panel->posB[2], 15, 35);
|
||||
WMMoveWidget(panel->posB[6], 58 + 95, 40 + 35);
|
||||
WMResizeWidget(panel->posB[6], 15, 35);
|
||||
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, 95, 70);
|
||||
WMMoveWidget(panel->posVF, 58, 40);
|
||||
WMResizeWidget(panel->posVF, width, height);
|
||||
WMMoveWidget(panel->posVF, startx + 15, starty + 15);
|
||||
WMSetFrameRelief(panel->posVF, WRSunken);
|
||||
WMSetWidgetBackgroundColor(panel->posVF, color);
|
||||
WMReleaseColor(color);
|
||||
@@ -207,16 +329,16 @@ static void createPanel(Panel * p)
|
||||
|
||||
/***************** Icon Size ****************/
|
||||
panel->sizeF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->sizeF, 210, 70);
|
||||
WMMoveWidget(panel->sizeF, 20, 155);
|
||||
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, 161, 20);
|
||||
WMMoveWidget(panel->sizeP, 25, 30);
|
||||
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);
|
||||
@@ -224,55 +346,83 @@ static void createPanel(Panel * p)
|
||||
|
||||
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, 260, 110);
|
||||
WMMoveWidget(panel->animF, 240, 10);
|
||||
WMResizeWidget(panel->animF, 215, 52);
|
||||
WMMoveWidget(panel->animF, 292, 6);
|
||||
WMSetFrameTitle(panel->animF, _("Iconification Animation"));
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
panel->animB[i] = WMCreateRadioButton(panel->animF);
|
||||
WMResizeWidget(panel->animB[i], 145, 20);
|
||||
WMMoveWidget(panel->animB[i], 15, 18 + i * 22);
|
||||
}
|
||||
WMGroupButtons(panel->animB[0], panel->animB[1]);
|
||||
WMGroupButtons(panel->animB[0], panel->animB[2]);
|
||||
WMGroupButtons(panel->animB[0], panel->animB[3]);
|
||||
|
||||
WMSetButtonText(panel->animB[0], _("Shrinking/Zooming"));
|
||||
WMSetButtonText(panel->animB[1], _("Spinning/Twisting"));
|
||||
WMSetButtonText(panel->animB[2], _("3D-flipping"));
|
||||
WMSetButtonText(panel->animB[3], _("None"));
|
||||
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, 260, 95);
|
||||
WMMoveWidget(panel->optF, 240, 130);
|
||||
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, 235, 20);
|
||||
WMMoveWidget(panel->arrB, 15, 10);
|
||||
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, 235, 20);
|
||||
WMMoveWidget(panel->omnB, 15, 37);
|
||||
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, 235, 28);
|
||||
WMMoveWidget(panel->sclB, 15, 60);
|
||||
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);
|
||||
@@ -283,41 +433,34 @@ static void createPanel(Panel * p)
|
||||
|
||||
static void storeData(_Panel * panel)
|
||||
{
|
||||
char buf[8];
|
||||
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");
|
||||
|
||||
buf[3] = 0;
|
||||
SetStringForKey(icon_position_dbvalue[panel->iconPos], "IconPosition");
|
||||
|
||||
if (panel->iconPos < 4) {
|
||||
buf[0] = 't';
|
||||
i = WMGetSliderValue(panel->minipreview.slider);
|
||||
if (i <= minipreview_minimum_size) {
|
||||
SetBoolForKey(False, "MiniwindowPreviewBalloons");
|
||||
} else {
|
||||
buf[0] = 'b';
|
||||
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;
|
||||
}
|
||||
if (panel->iconPos & 2) {
|
||||
buf[1] = 'r';
|
||||
} else {
|
||||
buf[1] = 'l';
|
||||
SetIntegerForKey(i, "MiniPreviewSize");
|
||||
}
|
||||
if (panel->iconPos & 1) {
|
||||
buf[2] = 'h';
|
||||
} else {
|
||||
buf[2] = 'v';
|
||||
}
|
||||
SetStringForKey(buf, "IconPosition");
|
||||
|
||||
if (WMGetButtonSelected(panel->animB[0]))
|
||||
SetStringForKey("zoom", "IconificationStyle");
|
||||
else if (WMGetButtonSelected(panel->animB[1]))
|
||||
SetStringForKey("twist", "IconificationStyle");
|
||||
else if (WMGetButtonSelected(panel->animB[2]))
|
||||
SetStringForKey("flip", "IconificationStyle");
|
||||
else
|
||||
SetStringForKey("none", "IconificationStyle");
|
||||
SetStringForKey(icon_animation[WMGetPopUpButtonSelectedItem(panel->animP)].db_value, "IconificationStyle");
|
||||
}
|
||||
|
||||
Panel *InitIcons(WMWidget *parent)
|
||||
|
||||
@@ -89,6 +89,9 @@ static const struct {
|
||||
{ "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") },
|
||||
@@ -101,6 +104,7 @@ static const struct {
|
||||
{ "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") },
|
||||
@@ -144,6 +148,10 @@ static const struct {
|
||||
{ "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") },
|
||||
@@ -355,7 +363,7 @@ char *capture_shortcut(Display *dpy, Bool *capturing, Bool convert_case)
|
||||
if ((numlock_mask != Mod5Mask) && (ev.xkey.state & Mod5Mask))
|
||||
strcat(buffer, "Mod5+");
|
||||
|
||||
strcat(buffer, key);
|
||||
wstrlcat(buffer, key, sizeof(buffer));
|
||||
|
||||
return wstrdup(buffer);
|
||||
}
|
||||
@@ -513,8 +521,8 @@ static void createPanel(Panel * p)
|
||||
|
||||
/* **************** Actions **************** */
|
||||
panel->actL = WMCreateLabel(panel->box);
|
||||
WMResizeWidget(panel->actL, 280, 20);
|
||||
WMMoveWidget(panel->actL, 20, 10);
|
||||
WMResizeWidget(panel->actL, 314, 20);
|
||||
WMMoveWidget(panel->actL, 9, 9);
|
||||
WMSetLabelFont(panel->actL, boldFont);
|
||||
WMSetLabelText(panel->actL, _("Actions"));
|
||||
WMSetLabelRelief(panel->actL, WRSunken);
|
||||
@@ -525,8 +533,8 @@ static void createPanel(Panel * p)
|
||||
WMSetLabelTextColor(panel->actL, panel->white);
|
||||
|
||||
panel->actLs = WMCreateList(panel->box);
|
||||
WMResizeWidget(panel->actLs, 280, 190);
|
||||
WMMoveWidget(panel->actLs, 20, 32);
|
||||
WMResizeWidget(panel->actLs, 314, 191);
|
||||
WMMoveWidget(panel->actLs, 9, 31);
|
||||
WMSetListUserDrawProc(panel->actLs, paintItem);
|
||||
WMHangData(panel->actLs, panel);
|
||||
|
||||
@@ -541,30 +549,30 @@ static void createPanel(Panel * p)
|
||||
/***************** Shortcut ****************/
|
||||
|
||||
panel->shoF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->shoF, 190, 210);
|
||||
WMMoveWidget(panel->shoF, 315, 10);
|
||||
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, 15, 65);
|
||||
WMMoveWidget(panel->shoT, 9, 65);
|
||||
WMAddNotificationObserver(typedKeys, panel, WMTextDidChangeNotification, panel->shoT);
|
||||
|
||||
panel->cleB = WMCreateCommandButton(panel->shoF);
|
||||
WMResizeWidget(panel->cleB, 75, 24);
|
||||
WMMoveWidget(panel->cleB, 15, 95);
|
||||
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, 100, 95);
|
||||
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, 15, 140);
|
||||
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."));
|
||||
|
||||
@@ -47,7 +47,7 @@ WPrefs_SOURCES = \
|
||||
|
||||
AM_CFLAGS =
|
||||
|
||||
AM_CPPFLAGS = -DLOCALEDIR=\"$(NLSDIR)\" -DRESOURCE_PATH=\"$(wpdatadir)\" -DWMAKER_RESOURCE_PATH=\"$(pkgdatadir)\" \
|
||||
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
|
||||
@@ -57,5 +57,6 @@ WPrefs_LDADD = \
|
||||
$(top_builddir)/WINGs/libWUtil.la\
|
||||
$(top_builddir)/wrlib/libwraster.la \
|
||||
@XLFLAGS@ @XLIBS@ \
|
||||
@LIBM@ \
|
||||
@FCLIBS@ \
|
||||
@INTLIBS@
|
||||
|
||||
+54
-13
@@ -22,6 +22,7 @@
|
||||
#include "WPrefs.h"
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <X11/keysym.h>
|
||||
#include <X11/cursorfont.h>
|
||||
@@ -42,7 +43,6 @@ typedef enum {
|
||||
} InfoType;
|
||||
|
||||
#define MAX_SECTION_SIZE 4
|
||||
#define PATH_LEN 256
|
||||
|
||||
typedef struct _Panel {
|
||||
WMBox *box;
|
||||
@@ -507,7 +507,7 @@ static void createPanel(_Panel * p)
|
||||
WMSetScrollViewContentView(sview, WMWidgetView(pad));
|
||||
|
||||
data = putNewItem(panel, pad, ExternalInfo, _("Debian Menu"));
|
||||
data->param.pipe.command = "/etc/X11/WindowMaker/menu.hook";
|
||||
data->param.pipe.command = "/etc/GNUstep/Defaults/menu.hook";
|
||||
|
||||
data = putNewItem(panel, pad, PipeInfo, _("RedHat Menu"));
|
||||
data->param.pipe.command = "wmconfig --output wmaker";
|
||||
@@ -614,7 +614,7 @@ static void createPanel(_Panel * p)
|
||||
WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->pathT);
|
||||
|
||||
label = WMCreateLabel(panel->pathF);
|
||||
WMResizeWidget(label, width - 20, 80);
|
||||
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"
|
||||
@@ -804,7 +804,7 @@ static void createPanel(_Panel * p)
|
||||
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 3; i++)
|
||||
for (i = 0; i < wlengthof(panel->itemPad); i++)
|
||||
WMUnmapWidget(panel->itemPad[i]);
|
||||
}
|
||||
changedItemPad(panel->typeP, panel);
|
||||
@@ -1299,7 +1299,7 @@ static Bool shouldRemoveItem(struct WEditMenuDelegate *delegate, WEditMenu * men
|
||||
_("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."));
|
||||
_("Yes"), _("No"), _("Yes, don't ask again"));
|
||||
switch (res) {
|
||||
case WAPRDefault:
|
||||
return True;
|
||||
@@ -1436,12 +1436,12 @@ static WEditMenu *buildSubmenu(_Panel * panel, WMPropList * pl)
|
||||
WSetEditMenuItemImage(item, panel->markerPix[data->type]);
|
||||
WSetEditMenuItemData(item, data, (WMCallback *) freeItemData);
|
||||
} else {
|
||||
char *buf = wmalloc(1024);
|
||||
snprintf(buf, 1024, _("Invalid menu command \"%s\" with label \"%s\" cleared"),
|
||||
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);
|
||||
wfree(buf);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1483,7 +1483,8 @@ static WMPropList *getDefaultMenu(_Panel * panel)
|
||||
static void showData(_Panel * panel)
|
||||
{
|
||||
const char *gspath;
|
||||
char *menuPath;
|
||||
char *menuPath, *labelText;
|
||||
char buf[1024];
|
||||
WMPropList *pmenu;
|
||||
|
||||
gspath = wusergnusteppath();
|
||||
@@ -1494,6 +1495,41 @@ static void showData(_Panel * panel)
|
||||
|
||||
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;
|
||||
|
||||
@@ -1518,6 +1554,14 @@ static void showData(_Panel * panel)
|
||||
|
||||
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);
|
||||
@@ -1558,15 +1602,12 @@ static WMPropList *processData(const char *title, ItemData * data)
|
||||
case ExecInfo:
|
||||
if (data->param.exec.command == NULL)
|
||||
goto return_null;
|
||||
#if 1
|
||||
|
||||
if (strpbrk(data->param.exec.command, "&$*|><?`=;")) {
|
||||
s1 = "SHEXEC";
|
||||
} else {
|
||||
s1 = "EXEC";
|
||||
}
|
||||
#else
|
||||
s1 = "SHEXEC";
|
||||
#endif
|
||||
|
||||
if (notblank(data->param.exec.shortcut)) {
|
||||
WMAddToPLArray(item, pscut);
|
||||
|
||||
@@ -73,7 +73,7 @@ static void storeData(_Panel * panel)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
for (i = 0; i < wlengthof(panel->scrB); i++) {
|
||||
if (WMGetButtonSelected(panel->scrB[i]))
|
||||
break;
|
||||
}
|
||||
@@ -106,7 +106,7 @@ static void createPanel(Panel * p)
|
||||
|
||||
buf1 = wmalloc(strlen(SPEED_IMAGE) + 1);
|
||||
buf2 = wmalloc(strlen(SPEED_IMAGE_S) + 1);
|
||||
for (i = 0; i < 5; i++) {
|
||||
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);
|
||||
|
||||
+152
-252
@@ -26,11 +26,52 @@
|
||||
#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;
|
||||
|
||||
@@ -57,20 +98,10 @@ typedef struct _Panel {
|
||||
DoubleTest *tester;
|
||||
|
||||
WMFrame *menuF;
|
||||
WMLabel *button1L;
|
||||
WMLabel *button2L;
|
||||
WMLabel *button3L;
|
||||
WMLabel *button8L;
|
||||
WMLabel *button9L;
|
||||
WMLabel *wheelL;
|
||||
WMLabel *wheelTiltL;
|
||||
WMPopUpButton *button1P;
|
||||
WMPopUpButton *button2P;
|
||||
WMPopUpButton *button3P;
|
||||
WMPopUpButton *button8P;
|
||||
WMPopUpButton *button9P;
|
||||
WMPopUpButton *wheelP;
|
||||
WMPopUpButton *wheelTiltP;
|
||||
struct {
|
||||
WMLabel *label;
|
||||
WMPopUpButton *popup;
|
||||
} mouse_action[wlengthof_nocheck(button_list)];
|
||||
|
||||
WMButton *disaB;
|
||||
|
||||
@@ -93,10 +124,6 @@ typedef struct _Panel {
|
||||
|
||||
static char *modifierNames[8];
|
||||
|
||||
static char *buttonActions[4];
|
||||
|
||||
static char *wheelActions[2];
|
||||
|
||||
#define DELAY(i) ((i)*75+170)
|
||||
|
||||
|
||||
@@ -163,13 +190,29 @@ static void returnPressed(void *observerData, WMNotification * 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 < 5; i++) {
|
||||
for (i = 0; i < wlengthof(panel->ddelaB); i++) {
|
||||
if (panel->ddelaB[i] == w)
|
||||
break;
|
||||
}
|
||||
@@ -181,34 +224,32 @@ static void doubleClick(WMWidget * w, void *data)
|
||||
|
||||
static int getButtonAction(const char *str)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!str)
|
||||
return -2;
|
||||
|
||||
if (strcasecmp(str, "None") == 0)
|
||||
return 0;
|
||||
else if (strcasecmp(str, "OpenApplicationsMenu") == 0)
|
||||
return 1;
|
||||
else if (strcasecmp(str, "OpenWindowListMenu") == 0)
|
||||
return 2;
|
||||
else if (strcasecmp(str, "SelectWindows") == 0)
|
||||
return 3;
|
||||
else
|
||||
return -1;
|
||||
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;
|
||||
|
||||
if (strcasecmp(str, "None") == 0)
|
||||
return 0;
|
||||
else if (strcasecmp(str, "SwitchWorkspaces") == 0)
|
||||
return 1;
|
||||
else
|
||||
return -1;
|
||||
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)
|
||||
@@ -224,96 +265,30 @@ static void showData(_Panel * panel)
|
||||
{
|
||||
char *str;
|
||||
int i;
|
||||
int a = -1, b = -1, c = -1, w = -1;
|
||||
int a = -1, b = -1;
|
||||
float accel;
|
||||
char buffer[32];
|
||||
Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->parent));
|
||||
|
||||
str = GetStringForKey("MouseLeftButtonAction");
|
||||
i = getButtonAction(str);
|
||||
if (i < 0) {
|
||||
a = 3;
|
||||
if (i == -1) {
|
||||
wwarning(_("bad value %s for option %s"), str, "MouseLeftButtonAction");
|
||||
}
|
||||
} else {
|
||||
a = i;
|
||||
}
|
||||
WMSetPopUpButtonSelectedItem(panel->button1P, a);
|
||||
for (i = 0; i < wlengthof(button_list); i++) {
|
||||
int action;
|
||||
|
||||
str = GetStringForKey("MouseMiddleButtonAction");
|
||||
i = getButtonAction(str);
|
||||
if (i < 0) {
|
||||
b = 2;
|
||||
if (i == -1) {
|
||||
wwarning(_("bad value %s for option %s"), str, "MouseMiddleButtonAction");
|
||||
}
|
||||
} else {
|
||||
b = i;
|
||||
}
|
||||
WMSetPopUpButtonSelectedItem(panel->button2P, b);
|
||||
str = GetStringForKey(button_list[i].db_key);
|
||||
if (button_list[i].type == T_BUTTON)
|
||||
action = getButtonAction(str);
|
||||
else
|
||||
action = getWheelAction(str);
|
||||
|
||||
str = GetStringForKey("MouseRightButtonAction");
|
||||
i = getButtonAction(str);
|
||||
if (i < 0) {
|
||||
c = 1;
|
||||
if (i == -1) {
|
||||
wwarning(_("bad value %s for option %s"), str, "MouseRightButtonAction");
|
||||
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;
|
||||
}
|
||||
} else {
|
||||
c = i;
|
||||
WMSetPopUpButtonSelectedItem(panel->mouse_action[i].popup, action);
|
||||
}
|
||||
WMSetPopUpButtonSelectedItem(panel->button3P, c);
|
||||
|
||||
str = GetStringForKey("MouseBackwardButtonAction");
|
||||
i = getButtonAction(str);
|
||||
if (i < 0) {
|
||||
b = 0;
|
||||
if (i == -1) {
|
||||
wwarning(_("bad value %s for option %s"), str, "MouseBackwardButtonAction");
|
||||
}
|
||||
} else {
|
||||
b = i;
|
||||
}
|
||||
WMSetPopUpButtonSelectedItem(panel->button8P, b);
|
||||
|
||||
str = GetStringForKey("MouseForwardButtonAction");
|
||||
i = getButtonAction(str);
|
||||
if (i < 0) {
|
||||
b = 0;
|
||||
if (i == -1) {
|
||||
wwarning(_("bad value %s for option %s"), str, "MouseForwardButtonAction");
|
||||
}
|
||||
} else {
|
||||
b = i;
|
||||
}
|
||||
WMSetPopUpButtonSelectedItem(panel->button9P, b);
|
||||
|
||||
str = GetStringForKey("MouseWheelAction");
|
||||
i = getWheelAction(str);
|
||||
if (i < 0) {
|
||||
w = 0;
|
||||
if (i == -1) {
|
||||
wwarning(_("bad value %s for option %s"), str, "MouseWheelAction");
|
||||
}
|
||||
} else {
|
||||
w = i;
|
||||
}
|
||||
WMSetPopUpButtonSelectedItem(panel->wheelP, w);
|
||||
|
||||
str = GetStringForKey("MouseWheelTiltAction");
|
||||
i = getWheelAction(str);
|
||||
if (i < 0) {
|
||||
w = 0;
|
||||
if (i == -1) {
|
||||
wwarning(_("bad value %s for option %s"), str, "MouseWheelTiltAction");
|
||||
}
|
||||
} else {
|
||||
w = i;
|
||||
}
|
||||
WMSetPopUpButtonSelectedItem(panel->wheelTiltP, w);
|
||||
|
||||
WMSetButtonSelected(panel->disaB, GetBoolForKey("DisableWSMouseActions"));
|
||||
toggle_disabling_of_mouse_actions(panel->disaB, panel);
|
||||
|
||||
/**/ getMouseParameters(dpy, &accel, &a);
|
||||
panel->maxThreshold = WidthOfScreen(DefaultScreenOfDisplay(dpy));
|
||||
@@ -323,16 +298,16 @@ static void showData(_Panel * panel)
|
||||
sprintf(buffer, "%i", a);
|
||||
WMSetTextFieldText(panel->threT, buffer);
|
||||
|
||||
WMSetSliderValue(panel->speedS, (accel - 0.25) / 0.25);
|
||||
WMSetSliderValue(panel->speedS, (accel - 0.25F) / 0.25F);
|
||||
|
||||
panel->acceleration = accel;
|
||||
sprintf(buffer, "%.2f", accel);
|
||||
sprintf(buffer, "%.2f", (double)accel);
|
||||
WMSetTextFieldText(panel->acceT, buffer);
|
||||
|
||||
/**/ b = GetIntegerForKey("DoubleClickTime");
|
||||
/* find best match */
|
||||
a = -1;
|
||||
for (i = 0; i < 5; i++) {
|
||||
for (i = 0; i < wlengthof(panel->ddelaB); i++) {
|
||||
if (DELAY(i) == b)
|
||||
a = i;
|
||||
}
|
||||
@@ -478,13 +453,13 @@ static void createPanel(Panel * p)
|
||||
|
||||
/**************** Mouse Speed ****************/
|
||||
panel->speedF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->speedF, 225, 90);
|
||||
WMMoveWidget(panel->speedF, 15, 5);
|
||||
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, 10, 14);
|
||||
WMMoveWidget(panel->speedL, 8, 10);
|
||||
WMSetLabelImagePosition(panel->speedL, WIPImageOnly);
|
||||
path = LocateImage(SPEED_ICON_FILE);
|
||||
if (path) {
|
||||
@@ -500,7 +475,7 @@ static void createPanel(Panel * p)
|
||||
|
||||
panel->speedS = WMCreateSlider(panel->speedF);
|
||||
WMResizeWidget(panel->speedS, 150, 15);
|
||||
WMMoveWidget(panel->speedS, 60, 35);
|
||||
WMMoveWidget(panel->speedS, 58, 30);
|
||||
WMSetSliderMinValue(panel->speedS, 0);
|
||||
WMSetSliderMaxValue(panel->speedS, 40);
|
||||
WMSetSliderContinuous(panel->speedS, False);
|
||||
@@ -508,32 +483,32 @@ static void createPanel(Panel * p)
|
||||
|
||||
panel->acceL = WMCreateLabel(panel->speedF);
|
||||
WMResizeWidget(panel->acceL, 50, 16);
|
||||
WMMoveWidget(panel->acceL, 10, 65);
|
||||
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, 60, 63);
|
||||
WMMoveWidget(panel->acceT, 58, 56);
|
||||
WMAddNotificationObserver(returnPressed, panel, WMTextDidEndEditingNotification, panel->acceT);
|
||||
|
||||
panel->threL = WMCreateLabel(panel->speedF);
|
||||
WMResizeWidget(panel->threL, 80, 16);
|
||||
WMMoveWidget(panel->threL, 100, 65);
|
||||
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, 180, 63);
|
||||
WMMoveWidget(panel->threT, 178, 56);
|
||||
WMAddNotificationObserver(returnPressed, panel, WMTextDidEndEditingNotification, panel->threT);
|
||||
|
||||
WMMapSubwidgets(panel->speedF);
|
||||
|
||||
/* ************** Grab Modifier **************** */
|
||||
panel->grabF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->grabF, 225, 45);
|
||||
WMMoveWidget(panel->grabF, 15, 95);
|
||||
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"
|
||||
@@ -541,8 +516,8 @@ static void createPanel(Panel * p)
|
||||
"clicking inside the window."), WMWidgetView(panel->grabF));
|
||||
|
||||
panel->grabP = WMCreatePopUpButton(panel->grabF);
|
||||
WMResizeWidget(panel->grabP, 160, 20);
|
||||
WMMoveWidget(panel->grabP, 50, 18);
|
||||
WMResizeWidget(panel->grabP, 178, 20);
|
||||
WMMoveWidget(panel->grabP, 20, 17);
|
||||
|
||||
fillModifierPopUp(panel->grabP);
|
||||
WMMapSubwidgets(panel->grabF);
|
||||
@@ -550,17 +525,17 @@ static void createPanel(Panel * p)
|
||||
/***************** Doubleclick Delay ****************/
|
||||
|
||||
panel->ddelaF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->ddelaF, 225, 87);
|
||||
WMMoveWidget(panel->ddelaF, 15, 140);
|
||||
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 < 5; i++) {
|
||||
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], 20 + (40 * i), 20);
|
||||
WMMoveWidget(panel->ddelaB[i], 18 + (40 * i), 18);
|
||||
WMSetButtonBordered(panel->ddelaB[i], False);
|
||||
WMSetButtonImagePosition(panel->ddelaB[i], WIPImageOnly);
|
||||
WMSetButtonAction(panel->ddelaB[i], doubleClick, panel);
|
||||
@@ -596,16 +571,16 @@ static void createPanel(Panel * p)
|
||||
wfree(buf2);
|
||||
|
||||
panel->tester = CreateDoubleTest(panel->ddelaF, _("Test"));
|
||||
WMResizeWidget(panel->tester, 84, 29);
|
||||
WMMoveWidget(panel->tester, 25, 52);
|
||||
WMResizeWidget(panel->tester, 84, 24);
|
||||
WMMoveWidget(panel->tester, 20, 48);
|
||||
|
||||
panel->ddelaT = WMCreateTextField(panel->ddelaF);
|
||||
WMResizeWidget(panel->ddelaT, 40, 20);
|
||||
WMMoveWidget(panel->ddelaT, 130, 57);
|
||||
WMMoveWidget(panel->ddelaT, 130, 50);
|
||||
|
||||
panel->ddelaL = WMCreateLabel(panel->ddelaF);
|
||||
WMResizeWidget(panel->ddelaL, 40, 16);
|
||||
WMMoveWidget(panel->ddelaL, 175, 63);
|
||||
WMMoveWidget(panel->ddelaL, 173, 54);
|
||||
{
|
||||
WMFont *font;
|
||||
WMColor *color;
|
||||
@@ -617,105 +592,44 @@ static void createPanel(Panel * p)
|
||||
WMReleaseFont(font);
|
||||
WMReleaseColor(color);
|
||||
}
|
||||
WMSetLabelText(panel->ddelaL, _("msec"));
|
||||
WMSetLabelText(panel->ddelaL, _("ms"));
|
||||
|
||||
WMMapSubwidgets(panel->ddelaF);
|
||||
|
||||
/* ************** Workspace Action Buttons **************** */
|
||||
|
||||
panel->menuF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->menuF, 260, 222);
|
||||
WMMoveWidget(panel->menuF, 250, 5);
|
||||
WMResizeWidget(panel->menuF, 276, 217);
|
||||
WMMoveWidget(panel->menuF, 236, 5);
|
||||
WMSetFrameTitle(panel->menuF, _("Workspace Mouse Actions"));
|
||||
|
||||
panel->disaB = WMCreateSwitchButton(panel->menuF);
|
||||
WMResizeWidget(panel->disaB, 205, 18);
|
||||
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);
|
||||
|
||||
panel->button1L = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->button1L, 107, 20);
|
||||
WMMoveWidget(panel->button1L, 5, 40);
|
||||
WMSetLabelTextAlignment(panel->button1L, WARight);
|
||||
WMSetLabelText(panel->button1L, _("Left Button"));
|
||||
for (i = 0; i < wlengthof(button_list); i++) {
|
||||
int j;
|
||||
|
||||
panel->button1P = WMCreatePopUpButton(panel->menuF);
|
||||
WMResizeWidget(panel->button1P, 135, 20);
|
||||
WMMoveWidget(panel->button1P, 115, 40);
|
||||
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->button2L = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->button2L, 107, 20);
|
||||
WMMoveWidget(panel->button2L, 5, 65);
|
||||
WMSetLabelTextAlignment(panel->button2L, WARight);
|
||||
WMSetLabelText(panel->button2L, _("Middle Button"));
|
||||
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);
|
||||
|
||||
panel->button2P = WMCreatePopUpButton(panel->menuF);
|
||||
WMResizeWidget(panel->button2P, 135, 20);
|
||||
WMMoveWidget(panel->button2P, 115, 65);
|
||||
|
||||
panel->button3L = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->button3L, 107, 20);
|
||||
WMMoveWidget(panel->button3L, 5, 90);
|
||||
WMSetLabelTextAlignment(panel->button3L, WARight);
|
||||
WMSetLabelText(panel->button3L, _("Right Button"));
|
||||
|
||||
panel->button3P = WMCreatePopUpButton(panel->menuF);
|
||||
WMResizeWidget(panel->button3P, 135, 20);
|
||||
WMMoveWidget(panel->button3P, 115, 90);
|
||||
|
||||
panel->button8L = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->button8L, 107, 20);
|
||||
WMMoveWidget(panel->button8L, 5, 115);
|
||||
WMSetLabelTextAlignment(panel->button8L, WARight);
|
||||
WMSetLabelText(panel->button8L, _("Back Button"));
|
||||
|
||||
panel->button8P = WMCreatePopUpButton(panel->menuF);
|
||||
WMResizeWidget(panel->button8P, 135, 20);
|
||||
WMMoveWidget(panel->button8P, 115, 115);
|
||||
|
||||
panel->button9L = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->button9L, 107, 20);
|
||||
WMMoveWidget(panel->button9L, 5, 140);
|
||||
WMSetLabelTextAlignment(panel->button9L, WARight);
|
||||
WMSetLabelText(panel->button9L, _("Forward Button"));
|
||||
|
||||
panel->button9P = WMCreatePopUpButton(panel->menuF);
|
||||
WMResizeWidget(panel->button9P, 135, 20);
|
||||
WMMoveWidget(panel->button9P, 115, 140);
|
||||
|
||||
panel->wheelL = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->wheelL, 107, 20);
|
||||
WMMoveWidget(panel->wheelL, 5, 165);
|
||||
WMSetLabelTextAlignment(panel->wheelL, WARight);
|
||||
WMSetLabelText(panel->wheelL, _("Mouse Wheel"));
|
||||
|
||||
panel->wheelP = WMCreatePopUpButton(panel->menuF);
|
||||
WMResizeWidget(panel->wheelP, 135, 20);
|
||||
WMMoveWidget(panel->wheelP, 115, 165);
|
||||
|
||||
panel->wheelTiltL = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->wheelTiltL, 107, 20);
|
||||
WMMoveWidget(panel->wheelTiltL, 5, 190);
|
||||
WMSetLabelTextAlignment(panel->wheelTiltL, WARight);
|
||||
WMSetLabelText(panel->wheelTiltL, _("Mouse Wheel Tilt"));
|
||||
|
||||
panel->wheelTiltP = WMCreatePopUpButton(panel->menuF);
|
||||
WMResizeWidget(panel->wheelTiltP, 135, 20);
|
||||
WMMoveWidget(panel->wheelTiltP, 115, 190);
|
||||
|
||||
for (i = 0; i < wlengthof(buttonActions); i++) {
|
||||
WMAddPopUpButtonItem(panel->button1P, buttonActions[i]);
|
||||
WMAddPopUpButtonItem(panel->button2P, buttonActions[i]);
|
||||
WMAddPopUpButtonItem(panel->button3P, buttonActions[i]);
|
||||
WMAddPopUpButtonItem(panel->button8P, buttonActions[i]);
|
||||
WMAddPopUpButtonItem(panel->button9P, buttonActions[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));
|
||||
}
|
||||
|
||||
for (i = 0; i < wlengthof(wheelActions); i++) {
|
||||
WMAddPopUpButtonItem(panel->wheelP, wheelActions[i]);
|
||||
WMAddPopUpButtonItem(panel->wheelTiltP, wheelActions[i]);
|
||||
}
|
||||
|
||||
WMMapSubwidgets(panel->menuF);
|
||||
|
||||
WMRealizeWidget(panel->box);
|
||||
@@ -729,6 +643,12 @@ 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");
|
||||
|
||||
@@ -788,9 +708,8 @@ static void storeCommandInScript(const char *cmd, const char *line)
|
||||
}
|
||||
wfree(tmppath);
|
||||
}
|
||||
sprintf(buffer, "chmod u+x %s", path);
|
||||
if (system(buffer) == -1)
|
||||
werror(_("could not execute command \"%s\""), buffer);
|
||||
if (chmod(path, permissions) != 0)
|
||||
wwarning(_("could not set permission 0%03o on file \"%s\""), permissions, path);
|
||||
|
||||
end:
|
||||
wfree(path);
|
||||
@@ -805,8 +724,6 @@ static void storeData(_Panel * panel)
|
||||
char buffer[64];
|
||||
int i;
|
||||
char *tmp, *p;
|
||||
static char *button[4] = { "None", "OpenApplicationsMenu", "OpenWindowListMenu", "SelectWindows" };
|
||||
static char *wheel[2] = { "None", "SwitchWorkspaces" };
|
||||
WMUserDefaults *udb = WMGetStandardUserDefaults();
|
||||
|
||||
if (!WMGetUDBoolForKey(udb, "NoXSetStuff")) {
|
||||
@@ -829,26 +746,17 @@ static void storeData(_Panel * panel)
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->disaB), "DisableWSMouseActions");
|
||||
|
||||
i = WMGetPopUpButtonSelectedItem(panel->button1P);
|
||||
SetStringForKey(button[i], "MouseLeftButtonAction");
|
||||
for (i = 0; i < wlengthof(button_list); i++) {
|
||||
const char *db_value;
|
||||
int action;
|
||||
|
||||
i = WMGetPopUpButtonSelectedItem(panel->button2P);
|
||||
SetStringForKey(button[i], "MouseMiddleButtonAction");
|
||||
|
||||
i = WMGetPopUpButtonSelectedItem(panel->button3P);
|
||||
SetStringForKey(button[i], "MouseRightButtonAction");
|
||||
|
||||
i = WMGetPopUpButtonSelectedItem(panel->button8P);
|
||||
SetStringForKey(button[i], "MouseBackwardButtonAction");
|
||||
|
||||
i = WMGetPopUpButtonSelectedItem(panel->button9P);
|
||||
SetStringForKey(button[i], "MouseForwardButtonAction");
|
||||
|
||||
i = WMGetPopUpButtonSelectedItem(panel->wheelP);
|
||||
SetStringForKey(wheel[i], "MouseWheelAction");
|
||||
|
||||
i = WMGetPopUpButtonSelectedItem(panel->wheelTiltP);
|
||||
SetStringForKey(wheel[i], "MouseWheelTiltAction");
|
||||
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);
|
||||
@@ -874,14 +782,6 @@ Panel *InitMouseSettings(WMWidget *parent)
|
||||
modifierNames[6] = wstrdup(_("Mod4"));
|
||||
modifierNames[7] = wstrdup(_("Mod5"));
|
||||
|
||||
buttonActions[0] = wstrdup(_("None"));
|
||||
buttonActions[1] = wstrdup(_("Applications Menu"));
|
||||
buttonActions[2] = wstrdup(_("Window List Menu"));
|
||||
buttonActions[3] = wstrdup(_("Select Windows"));
|
||||
|
||||
wheelActions[0] = wstrdup(_("None"));
|
||||
wheelActions[1] = wstrdup(_("Switch Workspaces"));
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Mouse Preferences");
|
||||
|
||||
+130
-124
@@ -21,6 +21,57 @@
|
||||
|
||||
#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;
|
||||
|
||||
@@ -39,12 +90,10 @@ typedef struct _Panel {
|
||||
WMPopUpButton *posiP;
|
||||
|
||||
WMFrame *ballF;
|
||||
WMButton *ballB[5];
|
||||
WMButton *ballB[wlengthof_nocheck(balloon_choices)];
|
||||
|
||||
WMFrame *optF;
|
||||
WMButton *bounceB;
|
||||
WMButton *bounceUrgB;
|
||||
WMButton *bounceRaisB;
|
||||
WMButton *bounceB[wlengthof_nocheck(appicon_bouncing)];
|
||||
|
||||
WMFrame *borderF;
|
||||
WMSlider *borderS;
|
||||
@@ -86,30 +135,32 @@ static void showData(_Panel * panel)
|
||||
int x;
|
||||
|
||||
str = GetStringForKey("ResizeDisplay");
|
||||
if (!str)
|
||||
str = "corner";
|
||||
if (strcasecmp(str, "corner") == 0)
|
||||
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);
|
||||
else if (strcasecmp(str, "center") == 0)
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, 1);
|
||||
else if (strcasecmp(str, "floating") == 0)
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, 2);
|
||||
else if (strcasecmp(str, "line") == 0)
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, 3);
|
||||
else if (strcasecmp(str, "none") == 0)
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, 4);
|
||||
found_valid_resize_display:
|
||||
|
||||
str = GetStringForKey("MoveDisplay");
|
||||
if (!str)
|
||||
str = "corner";
|
||||
if (strcasecmp(str, "corner") == 0)
|
||||
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);
|
||||
else if (strcasecmp(str, "center") == 0)
|
||||
WMSetPopUpButtonSelectedItem(panel->posiP, 1);
|
||||
else if (strcasecmp(str, "floating") == 0)
|
||||
WMSetPopUpButtonSelectedItem(panel->posiP, 2);
|
||||
else if (strcasecmp(str, "none") == 0)
|
||||
WMSetPopUpButtonSelectedItem(panel->posiP, 3);
|
||||
found_valid_move_display:
|
||||
|
||||
x = GetIntegerForKey("WorkspaceBorderSize");
|
||||
x = x < 0 ? 0 : x;
|
||||
@@ -129,57 +180,26 @@ static void showData(_Panel * panel)
|
||||
WMSetButtonSelected(panel->lrB, True);
|
||||
}
|
||||
|
||||
WMSetButtonSelected(panel->bounceB, GetBoolForKey("DoNotMakeAppIconsBounce"));
|
||||
if (GetStringForKey("BounceAppIconsWhenUrgent"))
|
||||
WMSetButtonSelected(panel->bounceUrgB, GetBoolForKey("BounceAppIconsWhenUrgent"));
|
||||
WMSetButtonSelected(panel->bounceRaisB, GetBoolForKey("RaiseAppIconsWhenBouncing"));
|
||||
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));
|
||||
}
|
||||
|
||||
WMSetButtonSelected(panel->ballB[0], GetBoolForKey("WindowTitleBalloons"));
|
||||
WMSetButtonSelected(panel->ballB[1], GetBoolForKey("MiniwindowTitleBalloons"));
|
||||
WMSetButtonSelected(panel->ballB[2], GetBoolForKey("MiniwindowApercuBalloons"));
|
||||
WMSetButtonSelected(panel->ballB[3], GetBoolForKey("AppIconBalloons"));
|
||||
WMSetButtonSelected(panel->ballB[4], GetBoolForKey("HelpBalloons"));
|
||||
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;
|
||||
|
||||
switch (WMGetPopUpButtonSelectedItem(panel->sizeP)) {
|
||||
case 0:
|
||||
str = "corner";
|
||||
break;
|
||||
case 1:
|
||||
str = "center";
|
||||
break;
|
||||
case 2:
|
||||
str = "floating";
|
||||
break;
|
||||
case 4:
|
||||
str = "none";
|
||||
break;
|
||||
default:
|
||||
str = "line";
|
||||
break;
|
||||
}
|
||||
SetStringForKey(str, "ResizeDisplay");
|
||||
i = WMGetPopUpButtonSelectedItem(panel->sizeP);
|
||||
SetStringForKey(resize_display[i].db_value, "ResizeDisplay");
|
||||
|
||||
switch (WMGetPopUpButtonSelectedItem(panel->posiP)) {
|
||||
case 0:
|
||||
str = "corner";
|
||||
break;
|
||||
case 1:
|
||||
str = "center";
|
||||
break;
|
||||
case 3:
|
||||
str = "none";
|
||||
break;
|
||||
default:
|
||||
str = "floating";
|
||||
break;
|
||||
}
|
||||
SetStringForKey(str, "MoveDisplay");
|
||||
i = WMGetPopUpButtonSelectedItem(panel->posiP);
|
||||
SetStringForKey(move_display[i].db_value, "MoveDisplay");
|
||||
|
||||
lr = WMGetButtonSelected(panel->lrB);
|
||||
tb = WMGetButtonSelected(panel->tbB);
|
||||
@@ -194,14 +214,11 @@ static void storeData(_Panel * panel)
|
||||
SetStringForKey(str, "WorkspaceBorder");
|
||||
SetIntegerForKey(WMGetSliderValue(panel->borderS), "WorkspaceBorderSize");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->bounceB), "DoNotMakeAppIconsBounce");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->bounceUrgB), "BounceAppIconsWhenUrgent");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->bounceRaisB), "RaiseAppIconsWhenBouncing");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->ballB[0]), "WindowTitleBalloons");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->ballB[1]), "MiniwindowTitleBalloons");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->ballB[2]), "MiniwindowApercuBalloons");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->ballB[3]), "AppIconBalloons");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->ballB[4]), "HelpBalloons");
|
||||
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)
|
||||
@@ -214,111 +231,100 @@ static void createPanel(Panel * p)
|
||||
|
||||
/***************** Size Display ****************/
|
||||
panel->sizeF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->sizeF, 240, 60);
|
||||
WMMoveWidget(panel->sizeF, 15, 10);
|
||||
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, 200, 20);
|
||||
WMMoveWidget(panel->sizeP, 20, 24);
|
||||
WMAddPopUpButtonItem(panel->sizeP, _("Corner of screen"));
|
||||
WMAddPopUpButtonItem(panel->sizeP, _("Center of screen"));
|
||||
WMAddPopUpButtonItem(panel->sizeP, _("Center of resized window"));
|
||||
WMAddPopUpButtonItem(panel->sizeP, _("Technical drawing-like"));
|
||||
WMAddPopUpButtonItem(panel->sizeP, _("Disabled"));
|
||||
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, 240, 60);
|
||||
WMMoveWidget(panel->posiF, 15, 75);
|
||||
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, 200, 20);
|
||||
WMMoveWidget(panel->posiP, 20, 24);
|
||||
WMAddPopUpButtonItem(panel->posiP, _("Corner of screen"));
|
||||
WMAddPopUpButtonItem(panel->posiP, _("Center of screen"));
|
||||
WMAddPopUpButtonItem(panel->posiP, _("Center of resized window"));
|
||||
WMAddPopUpButtonItem(panel->posiP, _("Disabled"));
|
||||
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, 240, 126);
|
||||
WMMoveWidget(panel->ballF, 265, 10);
|
||||
WMResizeWidget(panel->ballF, 220, 130);
|
||||
WMMoveWidget(panel->ballF, 285, 7);
|
||||
WMSetFrameTitle(panel->ballF, _("Show balloon for..."));
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
for (i = 0; i < wlengthof(balloon_choices); i++) {
|
||||
panel->ballB[i] = WMCreateSwitchButton(panel->ballF);
|
||||
WMResizeWidget(panel->ballB[i], 210, 20);
|
||||
WMMoveWidget(panel->ballB[i], 15, 16 + i * 22);
|
||||
WMResizeWidget(panel->ballB[i], 198, 20);
|
||||
WMMoveWidget(panel->ballB[i], 11, 20 + i * 26);
|
||||
WMSetButtonText(panel->ballB[i], _(balloon_choices[i].label));
|
||||
}
|
||||
WMSetButtonText(panel->ballB[0], _("incomplete window titles"));
|
||||
WMSetButtonText(panel->ballB[1], _("miniwindow titles"));
|
||||
WMSetButtonText(panel->ballB[2], _("miniwindow apercus"));
|
||||
WMSetButtonText(panel->ballB[3], _("application/dock icons"));
|
||||
WMSetButtonText(panel->ballB[4], _("internal help"));
|
||||
|
||||
WMMapSubwidgets(panel->ballF);
|
||||
|
||||
/***************** Options ****************/
|
||||
panel->optF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->optF, 240, 91);
|
||||
WMMoveWidget(panel->optF, 265, 136);
|
||||
WMResizeWidget(panel->optF, 255, 94);
|
||||
WMMoveWidget(panel->optF, 15, 125);
|
||||
WMSetFrameTitle(panel->optF, _("AppIcon bouncing"));
|
||||
|
||||
panel->bounceB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->bounceB, 210, 25);
|
||||
WMMoveWidget(panel->bounceB, 15, 14);
|
||||
WMSetButtonText(panel->bounceB, _("Disable AppIcon bounce."));
|
||||
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));
|
||||
|
||||
panel->bounceUrgB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->bounceUrgB, 210, 28);
|
||||
WMMoveWidget(panel->bounceUrgB, 15, 37);
|
||||
WMSetButtonText(panel->bounceUrgB, _("Bounce AppIcon when the application wants attention."));
|
||||
WMSetButtonSelected(panel->bounceUrgB, True); /* defaults to true */
|
||||
if (appicon_bouncing[i].default_value)
|
||||
WMSetButtonSelected(panel->bounceB[i], True);
|
||||
|
||||
panel->bounceRaisB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->bounceRaisB, 210, 23);
|
||||
WMMoveWidget(panel->bounceRaisB, 15, 65);
|
||||
WMSetButtonText(panel->bounceRaisB, _("Raise AppIcons when bouncing."));
|
||||
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, 240, 82);
|
||||
WMMoveWidget(panel->borderF, 15, 145);
|
||||
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, 20, 20);
|
||||
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, 20);
|
||||
WMMoveWidget(panel->borderL, 105, 22);
|
||||
|
||||
panel->lrB = WMCreateSwitchButton(panel->borderF);
|
||||
WMMoveWidget(panel->lrB, 20, 40);
|
||||
WMResizeWidget(panel->lrB, 100, 30);
|
||||
WMMoveWidget(panel->lrB, 11, 40);
|
||||
WMResizeWidget(panel->lrB, 95, 30);
|
||||
WMSetButtonText(panel->lrB, _("Left/Right"));
|
||||
|
||||
panel->tbB = WMCreateSwitchButton(panel->borderF);
|
||||
WMMoveWidget(panel->tbB, 120, 40);
|
||||
WMResizeWidget(panel->tbB, 100, 30);
|
||||
WMMoveWidget(panel->tbB, 110, 40);
|
||||
WMResizeWidget(panel->tbB, 105, 30);
|
||||
WMSetButtonText(panel->tbB, _("Top/Bottom"));
|
||||
|
||||
WMMapSubwidgets(panel->borderF);
|
||||
|
||||
+3
-3
@@ -7,7 +7,7 @@
|
||||
|
||||
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
|
||||
and define its 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
|
||||
@@ -16,7 +16,7 @@ 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
|
||||
Then, dock its application icon. The dock will automatically detect its
|
||||
icon and use it.
|
||||
|
||||
If you change configuration often, you might want to leave WPrefs
|
||||
@@ -46,7 +46,7 @@ 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
|
||||
open its 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
|
||||
|
||||
+75
-58
@@ -117,16 +117,21 @@ typedef struct _TexturePanel {
|
||||
|
||||
} _TexturePanel;
|
||||
|
||||
#define TYPE_SOLID 0
|
||||
#define TYPE_GRADIENT 1
|
||||
#define TYPE_SGRADIENT 2
|
||||
#define TYPE_TGRADIENT 3
|
||||
#define TYPE_PIXMAP 4
|
||||
enum {
|
||||
TYPE_SOLID,
|
||||
TYPE_GRADIENT,
|
||||
TYPE_SGRADIENT,
|
||||
TYPE_TGRADIENT,
|
||||
TYPE_PIXMAP
|
||||
};
|
||||
|
||||
#define PTYPE_TILE 0
|
||||
#define PTYPE_SCALE 1
|
||||
#define PTYPE_CENTER 2
|
||||
#define PTYPE_MAXIMIZE 3
|
||||
enum {
|
||||
PTYPE_TILE,
|
||||
PTYPE_SCALE,
|
||||
PTYPE_CENTER,
|
||||
PTYPE_MAXIMIZE,
|
||||
PTYPE_FILL
|
||||
};
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------------
|
||||
@@ -201,19 +206,17 @@ static void updateTGradImage(TexturePanel * panel)
|
||||
to.green = WMGreenComponentOfColor(color) >> 8;
|
||||
to.blue = WMBlueComponentOfColor(color) >> 8;
|
||||
|
||||
if (panel->image->width < 141 || panel->image->height < 91) {
|
||||
if (panel->image->width < 141 || panel->image->height < 91)
|
||||
image = RMakeTiledImage(panel->image, 141, 91);
|
||||
} else {
|
||||
else
|
||||
image = RCloneImage(panel->image);
|
||||
}
|
||||
|
||||
if (WMGetButtonSelected(panel->dirhB)) {
|
||||
if (WMGetButtonSelected(panel->dirhB))
|
||||
gradient = RRenderGradient(image->width, image->height, &from, &to, RHorizontalGradient);
|
||||
} else if (WMGetButtonSelected(panel->dirvB)) {
|
||||
else if (WMGetButtonSelected(panel->dirvB))
|
||||
gradient = RRenderGradient(image->width, image->height, &from, &to, RVerticalGradient);
|
||||
} else {
|
||||
else
|
||||
gradient = RRenderGradient(image->width, image->height, &from, &to, RDiagonalGradient);
|
||||
}
|
||||
|
||||
RCombineImagesWithOpaqueness(image, gradient, WMGetSliderValue(panel->topaS));
|
||||
RReleaseImage(gradient);
|
||||
@@ -357,10 +360,9 @@ static void sliderChangeCallback(WMWidget * w, void *data)
|
||||
{
|
||||
TexturePanel *panel = (TexturePanel *) data;
|
||||
RHSVColor hsv;
|
||||
int row, rows;
|
||||
int i, row, rows;
|
||||
WMListItem *item;
|
||||
RColor **colors;
|
||||
int i;
|
||||
RImage *image;
|
||||
WMScreen *scr = WMWidgetScreen(w);
|
||||
|
||||
@@ -368,7 +370,20 @@ static void sliderChangeCallback(WMWidget * w, void *data)
|
||||
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;
|
||||
|
||||
@@ -382,6 +397,7 @@ static void sliderChangeCallback(WMWidget * w, void *data)
|
||||
}
|
||||
|
||||
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) {
|
||||
@@ -392,7 +408,6 @@ static void sliderChangeCallback(WMWidget * w, void *data)
|
||||
updateSVSlider(panel->gsatS, True, panel->listFont, &hsv);
|
||||
}
|
||||
|
||||
rows = WMGetListNumberOfRows(panel->gcolL);
|
||||
if (rows == 0)
|
||||
return;
|
||||
|
||||
@@ -405,9 +420,8 @@ static void sliderChangeCallback(WMWidget * w, void *data)
|
||||
}
|
||||
colors[i] = NULL;
|
||||
|
||||
if (panel->gimage != None) {
|
||||
if (panel->gimage != None)
|
||||
XFreePixmap(WMScreenDisplay(scr), panel->gimage);
|
||||
}
|
||||
|
||||
image = RRenderMultiGradient(30, i * WMGetListItemHeight(panel->gcolL), colors, RVerticalGradient);
|
||||
RConvertImage(WMScreenRContext(scr), image, &panel->gimage);
|
||||
@@ -503,7 +517,7 @@ static void gradDeleteCallback(WMWidget * w, void *data)
|
||||
{
|
||||
TexturePanel *panel = (TexturePanel *) data;
|
||||
WMListItem *item;
|
||||
int row;
|
||||
int row, rows;
|
||||
|
||||
/* Parameter not used, but tell the compiler that it is ok */
|
||||
(void) w;
|
||||
@@ -516,9 +530,14 @@ static void gradDeleteCallback(WMWidget * w, void *data)
|
||||
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);
|
||||
@@ -601,7 +620,7 @@ static void browseImageCallback(WMWidget * w, void *data)
|
||||
TexturePanel *panel = (TexturePanel *) data;
|
||||
WMOpenPanel *opanel;
|
||||
WMScreen *scr = WMWidgetScreen(w);
|
||||
static char *ipath = NULL;
|
||||
static char *ipath;
|
||||
|
||||
opanel = WMGetOpenPanel(scr);
|
||||
WMSetFilePanelCanChooseDirectories(opanel, False);
|
||||
@@ -657,12 +676,11 @@ static void buttonCallback(WMWidget * w, void *data)
|
||||
{
|
||||
TexturePanel *panel = (TexturePanel *) data;
|
||||
|
||||
if (w == panel->okB) {
|
||||
if (w == panel->okB)
|
||||
(*panel->okAction) (panel->okData);
|
||||
} else {
|
||||
else
|
||||
(*panel->cancelAction) (panel->cancelData);
|
||||
}
|
||||
}
|
||||
|
||||
static void changeTypeCallback(WMWidget *w, void *data)
|
||||
{
|
||||
@@ -758,9 +776,8 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
return;
|
||||
|
||||
p = WMGetFromPLArray(texture, 0);
|
||||
if (!p) {
|
||||
if (!p)
|
||||
goto bad_texture;
|
||||
}
|
||||
type = WMGetFromPLString(p);
|
||||
|
||||
/*............................................... */
|
||||
@@ -769,11 +786,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_SOLID);
|
||||
|
||||
p = WMGetFromPLArray(texture, 1);
|
||||
if (!p) {
|
||||
if (!p)
|
||||
str = "black";
|
||||
} else {
|
||||
else
|
||||
str = WMGetFromPLString(p);
|
||||
}
|
||||
color = WMCreateNamedColor(scr, str, False);
|
||||
|
||||
WMSetColorWellColor(panel->defcW, color);
|
||||
@@ -786,11 +802,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_SGRADIENT);
|
||||
|
||||
p = WMGetFromPLArray(texture, 1);
|
||||
if (!p) {
|
||||
if (!p)
|
||||
str = "black";
|
||||
} else {
|
||||
else
|
||||
str = WMGetFromPLString(p);
|
||||
}
|
||||
color = WMCreateNamedColor(scr, str, False);
|
||||
|
||||
WMSetColorWellColor(panel->tcol1W, color);
|
||||
@@ -798,11 +813,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
WMReleaseColor(color);
|
||||
|
||||
p = WMGetFromPLArray(texture, 2);
|
||||
if (!p) {
|
||||
if (!p)
|
||||
str = "black";
|
||||
} else {
|
||||
else
|
||||
str = WMGetFromPLString(p);
|
||||
}
|
||||
color = WMCreateNamedColor(scr, str, False);
|
||||
|
||||
WMSetColorWellColor(panel->tcol2W, color);
|
||||
@@ -829,11 +843,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
WMSetSliderValue(panel->topaS, i);
|
||||
|
||||
p = WMGetFromPLArray(texture, 3);
|
||||
if (!p) {
|
||||
if (!p)
|
||||
str = "black";
|
||||
} else {
|
||||
else
|
||||
str = WMGetFromPLString(p);
|
||||
}
|
||||
color = WMCreateNamedColor(scr, str, False);
|
||||
|
||||
WMSetColorWellColor(panel->tcol1W, color);
|
||||
@@ -841,11 +854,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
WMReleaseColor(color);
|
||||
|
||||
p = WMGetFromPLArray(texture, 4);
|
||||
if (!p) {
|
||||
if (!p)
|
||||
str = "black";
|
||||
} else {
|
||||
else
|
||||
str = WMGetFromPLString(p);
|
||||
}
|
||||
color = WMCreateNamedColor(scr, str, False);
|
||||
|
||||
WMSetColorWellColor(panel->tcol2W, color);
|
||||
@@ -856,9 +868,9 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
|
||||
if (panel->imageFile)
|
||||
wfree(panel->imageFile);
|
||||
if ((panel->imageFile = wfindfileinarray(panel->pathList,
|
||||
WMGetFromPLString(WMGetFromPLArray(texture, 1)))) !=
|
||||
NULL) {
|
||||
panel->imageFile = wfindfileinarray(panel->pathList,
|
||||
WMGetFromPLString(WMGetFromPLArray(texture, 1)));
|
||||
if (panel->imageFile != NULL) {
|
||||
|
||||
panel->image = RLoadImage(WMScreenRContext(scr), panel->imageFile, 0);
|
||||
updateTGradImage(panel);
|
||||
@@ -882,11 +894,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_GRADIENT);
|
||||
|
||||
p = WMGetFromPLArray(texture, 1);
|
||||
if (!p) {
|
||||
if (!p)
|
||||
str = "black";
|
||||
} else {
|
||||
else
|
||||
str = WMGetFromPLString(p);
|
||||
}
|
||||
color = WMCreateNamedColor(scr, str, False);
|
||||
|
||||
WMSetColorWellColor(panel->defcW, color);
|
||||
@@ -898,11 +909,10 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
XColor xcolor;
|
||||
|
||||
p = WMGetFromPLArray(texture, i);
|
||||
if (!p) {
|
||||
if (!p)
|
||||
str = "black";
|
||||
} else {
|
||||
else
|
||||
str = WMGetFromPLString(p);
|
||||
}
|
||||
|
||||
XParseColor(WMScreenDisplay(scr), WMScreenRContext(scr)->cmap, str, &xcolor);
|
||||
|
||||
@@ -936,6 +946,9 @@ void SetTexturePanelTexture(TexturePanel * panel, const char *name, WMPropList *
|
||||
case 'M':
|
||||
WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_MAXIMIZE);
|
||||
break;
|
||||
case 'F':
|
||||
WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_FILL);
|
||||
break;
|
||||
default:
|
||||
case 'T':
|
||||
WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_TILE);
|
||||
@@ -1021,6 +1034,10 @@ WMPropList *GetTexturePanelTexture(TexturePanel * panel)
|
||||
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);
|
||||
@@ -1087,13 +1104,12 @@ WMPropList *GetTexturePanelTexture(TexturePanel * panel)
|
||||
color = WMGetColorWellColor(panel->defcW);
|
||||
str = WMGetColorRGBDescription(color);
|
||||
|
||||
if (WMGetButtonSelected(panel->dirdB)) {
|
||||
if (WMGetButtonSelected(panel->dirdB))
|
||||
prop = WMCreatePLArray(WMCreatePLString("mdgradient"), WMCreatePLString(str), NULL);
|
||||
} else if (WMGetButtonSelected(panel->dirvB)) {
|
||||
else if (WMGetButtonSelected(panel->dirvB))
|
||||
prop = WMCreatePLArray(WMCreatePLString("mvgradient"), WMCreatePLString(str), NULL);
|
||||
} else {
|
||||
else
|
||||
prop = WMCreatePLArray(WMCreatePLString("mhgradient"), WMCreatePLString(str), NULL);
|
||||
}
|
||||
wfree(str);
|
||||
|
||||
for (i = 0; i < WMGetListNumberOfRows(panel->gcolL); i++) {
|
||||
@@ -1390,6 +1406,7 @@ TexturePanel *CreateTexturePanel(WMWindow * keyWindow)
|
||||
WMAddPopUpButtonItem(panel->arrP, _("Scale"));
|
||||
WMAddPopUpButtonItem(panel->arrP, _("Center"));
|
||||
WMAddPopUpButtonItem(panel->arrP, _("Maximize"));
|
||||
WMAddPopUpButtonItem(panel->arrP, _("Fill"));
|
||||
WMSetPopUpButtonSelectedItem(panel->arrP, 0);
|
||||
|
||||
WMMapSubwidgets(panel->imageF);
|
||||
@@ -1493,7 +1510,7 @@ void testCancelButton(WMWidget * self, void *data)
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void wAbort()
|
||||
void wAbort(void)
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
|
||||
+2
-5
@@ -29,9 +29,6 @@
|
||||
#endif
|
||||
|
||||
|
||||
#define ICON_TITLE_FONT "sans serif:pixelsize=9"
|
||||
#define ICON_TITLE_VFONT "sans serif:pixelsize=9:weight=100"
|
||||
|
||||
#define MAX_SECTIONS 16
|
||||
|
||||
typedef struct _WPrefs {
|
||||
@@ -216,7 +213,7 @@ static void createMainWindow(WMScreen * scr)
|
||||
WMSetWindowCloseAction(WPrefs.win, quit, NULL);
|
||||
WMSetWindowMaxSize(WPrefs.win, 520, 390);
|
||||
WMSetWindowMinSize(WPrefs.win, 520, 390);
|
||||
WMSetWindowMiniwindowTitle(WPrefs.win, "Preferences");
|
||||
WMSetWindowMiniwindowTitle(WPrefs.win, _("Preferences"));
|
||||
|
||||
WPrefs.scrollV = WMCreateScrollView(WPrefs.win);
|
||||
WMResizeWidget(WPrefs.scrollV, 500, 87);
|
||||
@@ -605,7 +602,7 @@ static void loadConfigurations(WMScreen * scr, WMWindow * mainw)
|
||||
char *path;
|
||||
FILE *file;
|
||||
char buffer[1024];
|
||||
char mbuf[1024];
|
||||
char mbuf[1069]; /* Size of buffer and extra characters for the sprintfs */
|
||||
int v1, v2, v3;
|
||||
|
||||
path = wdefaultspathfordomain("WindowMaker");
|
||||
|
||||
@@ -37,6 +37,20 @@
|
||||
/* 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;
|
||||
|
||||
+169
-100
@@ -49,9 +49,11 @@ typedef struct _Panel {
|
||||
WMButton *resrB;
|
||||
|
||||
WMFrame *maxiF;
|
||||
WMLabel *maxiL;
|
||||
WMButton *miconB;
|
||||
WMButton *mdockB;
|
||||
|
||||
WMFrame *resizeF;
|
||||
WMLabel *resizeL;
|
||||
WMLabel *resizeTextL;
|
||||
WMSlider *resizeS;
|
||||
@@ -61,8 +63,8 @@ typedef struct _Panel {
|
||||
WMButton *opaqresizeB;
|
||||
WMButton *opaqkeybB;
|
||||
|
||||
WMFrame *tranF;
|
||||
WMButton *tranB;
|
||||
WMFrame *dragmaxF;
|
||||
WMPopUpButton *dragmaxP;
|
||||
} _Panel;
|
||||
|
||||
#define ICON_FILE "whandling"
|
||||
@@ -75,15 +77,30 @@ typedef struct _Panel {
|
||||
|
||||
#define NON_OPAQUE_RESIZE_PIXMAP "noopaqueresize"
|
||||
|
||||
#define PLACEMENT_WINDOW_PIXMAP "smallwindow"
|
||||
|
||||
#define THUMB_SIZE 16
|
||||
|
||||
static const char *placements[] = {
|
||||
"auto",
|
||||
"random",
|
||||
"manual",
|
||||
"cascade",
|
||||
"smart",
|
||||
"center"
|
||||
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)
|
||||
@@ -148,26 +165,37 @@ static void resizeCallback(WMWidget * w, void *data)
|
||||
|
||||
static int getPlacement(const char *str)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!str)
|
||||
return 0;
|
||||
|
||||
if (strcasecmp(str, "auto") == 0)
|
||||
return 0;
|
||||
else if (strcasecmp(str, "random") == 0)
|
||||
return 1;
|
||||
else if (strcasecmp(str, "manual") == 0)
|
||||
return 2;
|
||||
else if (strcasecmp(str, "cascade") == 0)
|
||||
return 3;
|
||||
else if (strcasecmp(str, "smart") == 0)
|
||||
return 4;
|
||||
else if (strcasecmp(str, "center") == 0)
|
||||
return 5;
|
||||
else
|
||||
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;
|
||||
@@ -200,12 +228,13 @@ static void showData(_Panel * panel)
|
||||
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->tranB, GetBoolForKey("OpenTransientOnOwnerWorkspace"));
|
||||
|
||||
WMSetButtonSelected(panel->opaqB, GetBoolForKey("OpaqueMove"));
|
||||
WMSetButtonSelected(panel->opaqresizeB, GetBoolForKey("OpaqueResize"));
|
||||
WMSetButtonSelected(panel->opaqkeybB, GetBoolForKey("OpaqueMoveResizeKeyboard"));
|
||||
@@ -232,9 +261,7 @@ static void storeData(_Panel * panel)
|
||||
SetBoolForKey(WMGetButtonSelected(panel->opaqresizeB), "OpaqueResize");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->opaqkeybB), "OpaqueMoveResizeKeyboard");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->tranB), "OpenTransientOnOwnerWorkspace");
|
||||
|
||||
SetStringForKey(placements[WMGetPopUpButtonSelectedItem(panel->placP)], "WindowPlacement");
|
||||
SetStringForKey(window_placements[WMGetPopUpButtonSelectedItem(panel->placP)].db_value, "WindowPlacement");
|
||||
sprintf(buf, "%i", WMGetSliderValue(panel->hsli));
|
||||
x = WMCreatePLString(buf);
|
||||
sprintf(buf, "%i", WMGetSliderValue(panel->vsli));
|
||||
@@ -246,6 +273,9 @@ static void storeData(_Panel * panel)
|
||||
|
||||
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");
|
||||
|
||||
@@ -262,6 +292,7 @@ static void createPanel(Panel * p)
|
||||
int swidth, sheight;
|
||||
char *path;
|
||||
WMBox *hbox;
|
||||
int i;
|
||||
|
||||
panel->box = WMCreateBox(panel->parent);
|
||||
WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2);
|
||||
@@ -273,33 +304,29 @@ static void createPanel(Panel * p)
|
||||
WMAddBoxSubview(panel->box, WMWidgetView(hbox), False, True, 110, 0, 10);
|
||||
|
||||
/************** Window Placement ***************/
|
||||
panel->placF = WMCreateFrame(hbox);
|
||||
WMMapWidget(panel->placF);
|
||||
WMAddBoxSubview(hbox, WMWidgetView(panel->placF), True, True, 100, 0, 10);
|
||||
|
||||
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, 105, 20);
|
||||
WMMoveWidget(panel->placP, 10, 20);
|
||||
WMAddPopUpButtonItem(panel->placP, _("Automatic"));
|
||||
WMAddPopUpButtonItem(panel->placP, _("Random"));
|
||||
WMAddPopUpButtonItem(panel->placP, _("Manual"));
|
||||
WMAddPopUpButtonItem(panel->placP, _("Cascade"));
|
||||
WMAddPopUpButtonItem(panel->placP, _("Smart"));
|
||||
WMAddPopUpButtonItem(panel->placP, _("Center"));
|
||||
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, 110, 32);
|
||||
WMMoveWidget(panel->porigL, 3, 45);
|
||||
WMSetLabelTextAlignment(panel->porigL, WACenter);
|
||||
WMSetLabelText(panel->porigL, _("Placement Origin"));
|
||||
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, 80, 20);
|
||||
WMMoveWidget(panel->porigvL, 18, 75);
|
||||
WMResizeWidget(panel->porigvL, 69, 20);
|
||||
WMMoveWidget(panel->porigvL, 150, 19);
|
||||
WMSetLabelTextAlignment(panel->porigvL, WACenter);
|
||||
|
||||
color = WMCreateRGBColor(scr, 0x5100, 0x5100, 0x7100, True);
|
||||
@@ -308,38 +335,61 @@ static void createPanel(Panel * p)
|
||||
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)));
|
||||
|
||||
if (sheight > swidth) {
|
||||
width = 70 * swidth / sheight;
|
||||
if (width > 195)
|
||||
width = 195;
|
||||
height = 195 * sheight / swidth;
|
||||
width = swidth * (109 - 13) / sheight;
|
||||
if (width <= (204 - 13)) {
|
||||
height = 109 - 13;
|
||||
} else {
|
||||
height = 195 * sheight / swidth;
|
||||
if (height > 70)
|
||||
height = 70;
|
||||
width = 70 * swidth / sheight;
|
||||
width = 204 - 13;
|
||||
height = sheight * (204 - 13) / swidth;
|
||||
}
|
||||
WMResizeWidget(panel->porigF, width, height);
|
||||
WMMoveWidget(panel->porigF, 125 + (195 - width) / 2, 20 + (70 - height) / 2);
|
||||
WMMoveWidget(panel->porigF, 9 + (204 - 13 - width) / 2, 45 + (109 - 13 - height) / 2);
|
||||
|
||||
panel->porigW = WMCreateLabel(panel->porigF);
|
||||
WMResizeWidget(panel->porigW, THUMB_SIZE, THUMB_SIZE);
|
||||
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, 125 + (195 - width) / 2, 20 + (70 - height) / 2 + height + 2);
|
||||
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, 125 + (195 - width) / 2 + width + 2, 20 + (70 - height) / 2);
|
||||
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);
|
||||
@@ -349,9 +399,9 @@ static void createPanel(Panel * p)
|
||||
WMMapSubwidgets(panel->placF);
|
||||
|
||||
/************** Opaque Move, Resize ***************/
|
||||
panel->opaqF = WMCreateFrame(hbox);
|
||||
WMMapWidget(panel->opaqF);
|
||||
WMAddBoxSubview(hbox, WMWidgetView(panel->opaqF), False, True, 150, 0, 0);
|
||||
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"
|
||||
@@ -360,7 +410,7 @@ static void createPanel(Panel * p)
|
||||
|
||||
panel->opaqB = WMCreateButton(panel->opaqF, WBTToggle);
|
||||
WMResizeWidget(panel->opaqB, 54, 54);
|
||||
WMMoveWidget(panel->opaqB, 14, 20);
|
||||
WMMoveWidget(panel->opaqB, 11, 22);
|
||||
WMSetButtonImagePosition(panel->opaqB, WIPImageOnly);
|
||||
|
||||
path = LocateImage(NON_OPAQUE_MOVE_PIXMAP);
|
||||
@@ -391,7 +441,7 @@ static void createPanel(Panel * p)
|
||||
|
||||
panel->opaqresizeB = WMCreateButton(panel->opaqF, WBTToggle);
|
||||
WMResizeWidget(panel->opaqresizeB, 54, 54);
|
||||
WMMoveWidget(panel->opaqresizeB, 82, 20);
|
||||
WMMoveWidget(panel->opaqresizeB, 75, 22);
|
||||
WMSetButtonImagePosition(panel->opaqresizeB, WIPImageOnly);
|
||||
|
||||
path = LocateImage(NON_OPAQUE_RESIZE_PIXMAP);
|
||||
@@ -420,51 +470,67 @@ static void createPanel(Panel * p)
|
||||
|
||||
panel->opaqkeybB = WMCreateSwitchButton(panel->opaqF);
|
||||
WMResizeWidget(panel->opaqkeybB, 122, 25);
|
||||
WMMoveWidget(panel->opaqkeybB, 14, 79);
|
||||
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, 205, 100);
|
||||
WMMoveWidget(panel->maxiF, 307, 125);
|
||||
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, 190, 30);
|
||||
WMMoveWidget(panel->miconB, 10, 14);
|
||||
WMSetButtonText(panel->miconB, _("...do not cover icons"));
|
||||
WMResizeWidget(panel->miconB, 120, 25);
|
||||
WMMoveWidget(panel->miconB, 10, 36);
|
||||
WMSetButtonText(panel->miconB, _("Icons"));
|
||||
|
||||
panel->mdockB = WMCreateSwitchButton(panel->maxiF);
|
||||
WMResizeWidget(panel->mdockB, 190, 30);
|
||||
WMMoveWidget(panel->mdockB, 10, 39);
|
||||
WMResizeWidget(panel->mdockB, 120, 25);
|
||||
WMMoveWidget(panel->mdockB, 10, 61);
|
||||
WMSetButtonText(panel->mdockB, _("The dock"));
|
||||
|
||||
WMSetButtonText(panel->mdockB, _("...do not cover dock"));
|
||||
WMMapSubwidgets(panel->maxiF);
|
||||
|
||||
panel->resizeS = WMCreateSlider(panel->maxiF);
|
||||
WMResizeWidget(panel->resizeS, 50, 15);
|
||||
WMMoveWidget(panel->resizeS, 10, 74);
|
||||
/**************** 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->maxiF);
|
||||
panel->resizeL = WMCreateLabel(panel->resizeF);
|
||||
WMResizeWidget(panel->resizeL, 30, 15);
|
||||
WMMoveWidget(panel->resizeL, 60, 74);
|
||||
WMMoveWidget(panel->resizeL, 90, 40);
|
||||
|
||||
panel->resizeTextL = WMCreateLabel(panel->maxiF);
|
||||
WMSetLabelText(panel->resizeTextL, _("Mod+Wheel\nresize increment"));
|
||||
WMResizeWidget(panel->resizeTextL, 110, 30);
|
||||
WMMoveWidget(panel->resizeTextL, 90, 66);
|
||||
|
||||
WMMapSubwidgets(panel->maxiF);
|
||||
WMMapSubwidgets(panel->resizeF);
|
||||
|
||||
/**************** Edge Resistance ****************/
|
||||
panel->resF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->resF, 289, 50);
|
||||
WMMoveWidget(panel->resF, 8, 125);
|
||||
WMResizeWidget(panel->resF, 127, 92);
|
||||
WMMoveWidget(panel->resF, 238, 6);
|
||||
WMSetFrameTitle(panel->resF, _("Edge Resistance"));
|
||||
|
||||
WMSetBalloonTextForView(_("Edge resistance will make windows `resist'\n"
|
||||
@@ -474,39 +540,42 @@ static void createPanel(Panel * p)
|
||||
|
||||
panel->resS = WMCreateSlider(panel->resF);
|
||||
WMResizeWidget(panel->resS, 80, 15);
|
||||
WMMoveWidget(panel->resS, 10, 22);
|
||||
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, 95, 22);
|
||||
WMMoveWidget(panel->resL, 90, 22);
|
||||
|
||||
panel->resaB = WMCreateRadioButton(panel->resF);
|
||||
WMMoveWidget(panel->resaB, 130, 15);
|
||||
WMResizeWidget(panel->resaB, 70, 27);
|
||||
WMMoveWidget(panel->resaB, 9, 39);
|
||||
WMResizeWidget(panel->resaB, 107, 23);
|
||||
WMSetButtonText(panel->resaB, _("Resist"));
|
||||
|
||||
panel->resrB = WMCreateRadioButton(panel->resF);
|
||||
WMMoveWidget(panel->resrB, 200, 15);
|
||||
WMResizeWidget(panel->resrB, 70, 27);
|
||||
WMMoveWidget(panel->resrB, 9, 62);
|
||||
WMResizeWidget(panel->resrB, 107, 23);
|
||||
WMSetButtonText(panel->resrB, _("Attract"));
|
||||
WMGroupButtons(panel->resrB, panel->resaB);
|
||||
|
||||
WMMapSubwidgets(panel->resF);
|
||||
|
||||
/**************** Transients on Parent Workspace ****************/
|
||||
panel->tranF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->tranF, 289, 40);
|
||||
WMMoveWidget(panel->tranF, 8, 185);
|
||||
/**************** 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->tranB = WMCreateSwitchButton(panel->tranF);
|
||||
WMMoveWidget(panel->tranB, 10, 5);
|
||||
WMResizeWidget(panel->tranB, 250, 30);
|
||||
WMSetButtonText(panel->tranB, _("Open dialogs in the same workspace as their owners"));
|
||||
panel->dragmaxP = WMCreatePopUpButton(panel->dragmaxF);
|
||||
WMResizeWidget(panel->dragmaxP, 328, 20);
|
||||
WMMoveWidget(panel->dragmaxP, 15, 18);
|
||||
|
||||
WMMapSubwidgets(panel->tranF);
|
||||
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);
|
||||
|
||||
+13
-13
@@ -114,17 +114,17 @@ static void createPanel(Panel * p)
|
||||
/***************** Workspace Navigation *****************/
|
||||
panel->navF = WMCreateFrame(panel->box);
|
||||
WMResizeWidget(panel->navF, 490, 210);
|
||||
WMMoveWidget(panel->navF, 15, 10);
|
||||
WMMoveWidget(panel->navF, 15, 8);
|
||||
WMSetFrameTitle(panel->navF, _("Workspace Navigation"));
|
||||
|
||||
panel->cyclB = WMCreateSwitchButton(panel->navF);
|
||||
WMResizeWidget(panel->cyclB, 410, 34);
|
||||
WMMoveWidget(panel->cyclB, 75, 30);
|
||||
WMSetButtonText(panel->cyclB, _("Wrap to the first workspace from the last workspace."));
|
||||
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, 15);
|
||||
WMMoveWidget(panel->cyclL, 10, 12);
|
||||
WMSetLabelImagePosition(panel->cyclL, WIPImageOnly);
|
||||
CreateImages(scr, rc, xis, CYCLE_FILE, &icon1, NULL);
|
||||
if (icon1)
|
||||
@@ -135,12 +135,12 @@ static void createPanel(Panel * p)
|
||||
|
||||
/**/ panel->linkB = WMCreateSwitchButton(panel->navF);
|
||||
WMResizeWidget(panel->linkB, 410, 34);
|
||||
WMMoveWidget(panel->linkB, 75, 75);
|
||||
WMSetButtonText(panel->linkB, _("Switch workspaces while dragging windows."));
|
||||
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, 80);
|
||||
WMMoveWidget(panel->linkL, 10, 77);
|
||||
WMSetLabelImagePosition(panel->linkL, WIPImageOnly);
|
||||
CreateImages(scr, rc, xis, DONT_LINK_FILE, &icon1, NULL);
|
||||
if (icon1)
|
||||
@@ -151,12 +151,12 @@ static void createPanel(Panel * p)
|
||||
|
||||
/**/ panel->newB = WMCreateSwitchButton(panel->navF);
|
||||
WMResizeWidget(panel->newB, 410, 34);
|
||||
WMMoveWidget(panel->newB, 75, 120);
|
||||
WMSetButtonText(panel->newB, _("Automatically create new workspaces."));
|
||||
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, 130);
|
||||
WMMoveWidget(panel->newL, 10, 123);
|
||||
WMSetLabelImagePosition(panel->newL, WIPImageOnly);
|
||||
CreateImages(scr, rc, xis, ADVANCE_FILE, &icon1, NULL);
|
||||
if (icon1)
|
||||
@@ -167,13 +167,13 @@ static void createPanel(Panel * p)
|
||||
|
||||
/**/ panel->posL = WMCreateLabel(panel->navF);
|
||||
WMResizeWidget(panel->posL, 275, 30);
|
||||
WMMoveWidget(panel->posL, 75, 165);
|
||||
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, 160);
|
||||
WMMoveWidget(panel->posiL, 10, 156);
|
||||
WMSetLabelImagePosition(panel->posiL, WIPImageOnly);
|
||||
CreateImages(scr, rc, xis, WSNAME_FILE, &icon1, NULL);
|
||||
if (icon1)
|
||||
@@ -184,7 +184,7 @@ static void createPanel(Panel * p)
|
||||
|
||||
panel->posP = WMCreatePopUpButton(panel->navF);
|
||||
WMResizeWidget(panel->posP, 125, 20);
|
||||
WMMoveWidget(panel->posP, 350, 170);
|
||||
WMMoveWidget(panel->posP, 350, 166);
|
||||
WMAddPopUpButtonItem(panel->posP, _("Disable"));
|
||||
WMAddPopUpButtonItem(panel->posP, _("Center"));
|
||||
WMAddPopUpButtonItem(panel->posP, _("Top"));
|
||||
|
||||
@@ -66,19 +66,6 @@ static void print_help(const char *progname)
|
||||
puts(_(" --help print this message and exit"));
|
||||
}
|
||||
|
||||
#if 0
|
||||
static RETSIGTYPE handleDeadChild(int sig)
|
||||
{
|
||||
pid_t pid;
|
||||
int status;
|
||||
|
||||
pid = waitpid(-1, &status, WNOHANG);
|
||||
if (pid > 0) {
|
||||
DeadChildren[DeadChildrenCount++] = pid;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void AddDeadChildHandler(pid_t pid, void (*handler) (void *), void *data)
|
||||
{
|
||||
int i;
|
||||
@@ -164,9 +151,6 @@ int main(int argc, char **argv)
|
||||
wfatal(_("could not open display %s"), XDisplayName(display_name));
|
||||
exit(0);
|
||||
}
|
||||
#if 0
|
||||
XSynchronize(dpy, 1);
|
||||
#endif
|
||||
scr = WMCreateScreen(dpy, DefaultScreen(dpy));
|
||||
if (!scr) {
|
||||
wfatal(_("could not initialize application"));
|
||||
|
||||
+49
-20
@@ -1,11 +1,11 @@
|
||||
CATALOGS = @WPMOFILES@
|
||||
DOMAIN = WPrefs
|
||||
|
||||
nlsdir = $(NLSDIR)
|
||||
CATALOGS = @WPREFSMOFILES@
|
||||
|
||||
CLEANFILES = WPrefs.pot $(CATALOGS)
|
||||
CLEANFILES = $(DOMAIN).pot $(CATALOGS)
|
||||
|
||||
EXTRA_DIST = bg.po ca.po cs.po de.po es.po et.po fi.po fr.po hr.po hu.po \
|
||||
it.po ja.po ko.po nl.po pt.po ru.po sk.po zh_CN.po zh_TW.po
|
||||
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 tr.po uk.po zh_CN.po zh_TW.po
|
||||
|
||||
POTFILES = \
|
||||
$(top_srcdir)/WPrefs.app/Appearance.c \
|
||||
@@ -15,7 +15,6 @@ POTFILES = \
|
||||
$(top_srcdir)/WPrefs.app/Focus.c \
|
||||
$(top_srcdir)/WPrefs.app/FontSimple.c \
|
||||
$(top_srcdir)/WPrefs.app/Icons.c \
|
||||
$(top_srcdir)/WPrefs.app/KeyboardSettings.c \
|
||||
$(top_srcdir)/WPrefs.app/KeyboardShortcuts.c \
|
||||
$(top_srcdir)/WPrefs.app/Menu.c \
|
||||
$(top_srcdir)/WPrefs.app/MenuPreferences.c \
|
||||
@@ -23,40 +22,70 @@ POTFILES = \
|
||||
$(top_srcdir)/WPrefs.app/Paths.c \
|
||||
$(top_srcdir)/WPrefs.app/Preferences.c \
|
||||
$(top_srcdir)/WPrefs.app/TexturePanel.c \
|
||||
$(top_srcdir)/WPrefs.app/Themes.c \
|
||||
$(top_srcdir)/WPrefs.app/WPrefs.c \
|
||||
$(top_srcdir)/WPrefs.app/WindowHandling.c \
|
||||
$(top_srcdir)/WPrefs.app/Workspace.c \
|
||||
$(top_srcdir)/WPrefs.app/main.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:
|
||||
msgfmt -c -o $@ $<
|
||||
$(AM_V_GEN)$(MSGFMT) -c -o $@ $<
|
||||
|
||||
|
||||
all-local: $(CATALOGS)
|
||||
|
||||
WPrefs.pot: $(POTFILES)
|
||||
xgettext --default-domain=WPrefs \
|
||||
|
||||
.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 WPrefs.po WPrefs.pot; then \
|
||||
rm -f WPrefs.po; \
|
||||
@if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \
|
||||
rm -f $(DOMAIN).po; \
|
||||
else \
|
||||
mv -f WPrefs.po WPrefs.pot; \
|
||||
mv -f $(DOMAIN).po $(DOMAIN).pot; \
|
||||
fi
|
||||
endif
|
||||
|
||||
|
||||
install-data-local: $(CATALOGS)
|
||||
$(mkinstalldirs) $(DESTDIR)$(nlsdir)
|
||||
chmod 755 $(DESTDIR)$(nlsdir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(localedir)
|
||||
for n in $(CATALOGS) __DuMmY ; do \
|
||||
if test "$$n" -a "$$n" != "__DuMmY" ; then \
|
||||
l=`basename $$n .mo`; \
|
||||
$(mkinstalldirs) $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \
|
||||
chmod 755 $(DESTDIR)$(nlsdir)/$$l; \
|
||||
chmod 755 $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \
|
||||
$(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES/WPrefs.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"
|
||||
|
||||
+1
-18
@@ -1,21 +1,3 @@
|
||||
|
||||
General instructions for translating po files can be found in the po/README directory
|
||||
in the top of the WindowMaker source tree. To update one of the WPrefs.app
|
||||
translations (e.g. the German) do this:
|
||||
|
||||
1) make WPrefs.pot
|
||||
|
||||
2) edit the file WPrefs.pot, adding new translated strings or correcting
|
||||
previous entries
|
||||
|
||||
3) msgmerge de.po WPrefs.pot > de.po.new
|
||||
|
||||
4) After checking de.po.new is OK, rename it to de.po to overwrite the
|
||||
previous file.
|
||||
|
||||
|
||||
All files are now in UTF-8
|
||||
|
||||
File Language Current Maintainer
|
||||
------------------------------------------------------------------------------
|
||||
pt.po Portuguese Eliphas Levy Theodoro <eliphas@conectiva.com.br>
|
||||
@@ -43,3 +25,4 @@ 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>
|
||||
|
||||
+24
-59
@@ -537,27 +537,27 @@ msgstr "Правило за фокусиране"
|
||||
# ../../WPrefs.app/Focus.c:196
|
||||
#: ../../WPrefs.app/Focus.c:222
|
||||
msgid "Manual: Click on the window to set keyboard input focus"
|
||||
msgstr "Ръчно: щракане върху прозореца, за да му се даде клавиатурния фокус."
|
||||
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 "Автоматично: клавиатурният фокус се получава от прозореца, върху който е мишката."
|
||||
msgstr "Автоматично: клавиатурният фокус се получава от прозореца, върху който е мишката"
|
||||
|
||||
# ../../WPrefs.app/Focus.c:271
|
||||
#: ../../WPrefs.app/Focus.c:243
|
||||
msgid "Install colormap in the window..."
|
||||
msgid "Install colormap from the window..."
|
||||
msgstr "Цветовата палитра е за прозореца,... "
|
||||
|
||||
# ../../WPrefs.app/Focus.c:276
|
||||
#: ../../WPrefs.app/Focus.c:248
|
||||
msgid "...that has the input focus."
|
||||
msgstr "... който е фокусиран."
|
||||
msgid "...that has the input focus"
|
||||
msgstr "... който е фокусиран"
|
||||
|
||||
# ../../WPrefs.app/Focus.c:281
|
||||
#: ../../WPrefs.app/Focus.c:253
|
||||
msgid "...that is under the mouse pointer."
|
||||
msgstr "... който е под мишката."
|
||||
msgid "...that's under the mouse pointer"
|
||||
msgstr "... който е под мишката"
|
||||
|
||||
# ../../WPrefs.app/Focus.c:290
|
||||
#: ../../WPrefs.app/Focus.c:262
|
||||
@@ -566,27 +566,18 @@ msgstr "Забавяне на автоматичното повдигане"
|
||||
|
||||
# ../../WPrefs.app/Focus.c:347
|
||||
#: ../../WPrefs.app/Focus.c:319 ../../WPrefs.app/MouseSettings.c:601
|
||||
msgid "msec"
|
||||
msgid "ms"
|
||||
msgstr "ms"
|
||||
|
||||
# ../../WPrefs.app/Focus.c:364
|
||||
#: ../../WPrefs.app/Focus.c:336
|
||||
msgid ""
|
||||
"Do not let applications receive\n"
|
||||
"the click used to focus windows."
|
||||
msgstr ""
|
||||
"Приложенията да не получават\n"
|
||||
"щракания, използвани за\n"
|
||||
"фокусиране на прозорец."
|
||||
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\n"
|
||||
"windows."
|
||||
msgstr ""
|
||||
"Автоматично да се фокусират\n"
|
||||
"новите прозорци."
|
||||
msgid "Automatically focus new windows"
|
||||
msgstr "Автоматично да се фокусират новите прозорци"
|
||||
|
||||
# ../../WPrefs.app/Focus.c:391
|
||||
#: ../../WPrefs.app/Focus.c:363
|
||||
@@ -1488,8 +1479,8 @@ msgid "No"
|
||||
msgstr "Не"
|
||||
|
||||
#: ../../WPrefs.app/Menu.c:1407
|
||||
msgid "Yes, don't ask again."
|
||||
msgstr "Да, не ме питай пак!"
|
||||
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
|
||||
@@ -1917,12 +1908,8 @@ msgid "internal help"
|
||||
msgstr "вътрешна справка"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:292
|
||||
msgid ""
|
||||
"Raise window when switching\n"
|
||||
"focus with keyboard."
|
||||
msgstr ""
|
||||
"Да се повдига прозорецът при про-\n"
|
||||
"мяна на фокуса с клавиатурата."
|
||||
msgid "Raise window when switching focus with keyboard"
|
||||
msgstr "Да се повдига прозорецът при про-мяна на фокуса с клавиатурата"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:298
|
||||
msgid ""
|
||||
@@ -2431,35 +2418,23 @@ msgid "Workspace Navigation"
|
||||
msgstr "Навигация по работните места"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:183
|
||||
msgid ""
|
||||
"wrap to the first workspace after the\n"
|
||||
"last workspace."
|
||||
msgstr ""
|
||||
"да се минава към първото работно място\n"
|
||||
"след задминаване на последното"
|
||||
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 ""
|
||||
"да се сменя работното място при\n"
|
||||
"влачене на прозорец."
|
||||
msgid "Switch workspaces while dragging windows"
|
||||
msgstr "да се сменя работното място при влачене на прозорец"
|
||||
|
||||
# ../../WPrefs.app/Workspace.c:228
|
||||
#: ../../WPrefs.app/Workspace.c:227
|
||||
msgid "automatically create new workspaces."
|
||||
msgstr ""
|
||||
"автоматично да се създават нови\n"
|
||||
"работни места."
|
||||
msgid "Automatically create new workspaces"
|
||||
msgstr "автоматично да се създават нови работни места"
|
||||
|
||||
# ../../WPrefs.app/Workspace.c:251
|
||||
#: ../../WPrefs.app/Workspace.c:250
|
||||
msgid ""
|
||||
"Position of workspace\n"
|
||||
"name display"
|
||||
msgstr ""
|
||||
"Място на името на\n"
|
||||
"работното място"
|
||||
msgid "Position of workspace name display"
|
||||
msgstr "Място на името на работното място"
|
||||
|
||||
# ../../WPrefs.app/Workspace.c:270
|
||||
#: ../../WPrefs.app/Workspace.c:269
|
||||
@@ -2596,16 +2571,6 @@ msgstr "приложението не може да бъде инициализ
|
||||
#~ msgid "Disable cycling color highlighting of icons"
|
||||
#~ msgstr "Без въртене на пунктир около маркираните иконки."
|
||||
|
||||
# ../../WPrefs.app/Focus.c:200
|
||||
#~ msgid ""
|
||||
#~ "Set keyboard input focus to\n"
|
||||
#~ "the window under the mouse pointer,\n"
|
||||
#~ "including the root window."
|
||||
#~ msgstr ""
|
||||
#~ "Фокусът е за прозореца, върху\n"
|
||||
#~ "който е мишката, в това число\n"
|
||||
#~ "и основния (т.н. root) прозорец."
|
||||
|
||||
# ../../WPrefs.app/Focus.c:254
|
||||
#~ msgid "Click window to focus"
|
||||
#~ msgstr "Щракни за фокус"
|
||||
|
||||
+23
-41
@@ -454,40 +454,32 @@ 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 in the window..."
|
||||
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."
|
||||
msgid "...that has the input focus"
|
||||
msgstr "...que està enfocada"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:253
|
||||
msgid "...that is under the mouse pointer."
|
||||
msgstr "...que està sota el punter del ratolí."
|
||||
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 "msec"
|
||||
msgstr "mseg"
|
||||
msgid "ms"
|
||||
msgstr "ms"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:336
|
||||
msgid ""
|
||||
"Do not let applications receive\n"
|
||||
"the click used to focus windows."
|
||||
msgstr ""
|
||||
"No passar el clic utilitzat per\n"
|
||||
"enfocar la finestra a les aplicacions."
|
||||
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\n"
|
||||
"windows."
|
||||
msgstr ""
|
||||
"Enfocar les finestres noves\n"
|
||||
"automàticament."
|
||||
msgid "Automatically focus new windows"
|
||||
msgstr "Enfocar les finestres noves automàticament"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:363
|
||||
msgid "Window Focus Preferences"
|
||||
@@ -1322,8 +1314,8 @@ msgid "No"
|
||||
msgstr "No"
|
||||
|
||||
#: ../../WPrefs.app/Menu.c:1405
|
||||
msgid "Yes, don't ask again."
|
||||
msgstr "Sí, no preguntis més."
|
||||
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
|
||||
@@ -1675,12 +1667,8 @@ msgid "internal help"
|
||||
msgstr "ajuda interna"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:292
|
||||
msgid ""
|
||||
"Raise window when switching\n"
|
||||
"focus with keyboard."
|
||||
msgstr ""
|
||||
"Elevar la finestra enfocada amb\n"
|
||||
"el teclat automàticament."
|
||||
msgid "Raise window when switching focus with keyboard"
|
||||
msgstr "Elevar la finestra enfocada amb el teclat automàticament"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:298
|
||||
msgid ""
|
||||
@@ -2108,26 +2096,20 @@ msgid "Workspace Navigation"
|
||||
msgstr "Navegació entre àrees de treball"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:183
|
||||
msgid ""
|
||||
"wrap to the first workspace after the\n"
|
||||
"last workspace."
|
||||
msgstr "tornar a la primera àrea després de l'última"
|
||||
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"
|
||||
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"
|
||||
msgid "Automatically create new workspaces"
|
||||
msgstr "Crear noves àrees de treball automàticament"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:250
|
||||
msgid ""
|
||||
"Position of workspace\n"
|
||||
"name display"
|
||||
msgstr ""
|
||||
"Posició del nom de\n"
|
||||
"l'àrea de treball"
|
||||
msgid "Position of workspace name display"
|
||||
msgstr "Posició del nom de l'àrea de treball"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:269
|
||||
msgid "Disable"
|
||||
|
||||
+24
-49
@@ -426,50 +426,39 @@ 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."
|
||||
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í\n"
|
||||
"vstupu na okno pod ukazatelem\n"
|
||||
"myši."
|
||||
msgstr "Automaticky: Nastaví zaměření vstupu na okno pod ukazatelem myši"
|
||||
|
||||
#: ../Focus.c:243
|
||||
msgid "Install colormap in the window..."
|
||||
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í."
|
||||
msgid "...that has the input focus"
|
||||
msgstr "které má zaměření"
|
||||
|
||||
#: ../Focus.c:253
|
||||
msgid "...that is under the mouse pointer."
|
||||
msgstr "které je pod myší."
|
||||
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 "msec"
|
||||
msgid "ms"
|
||||
msgstr "ms"
|
||||
|
||||
#: ../Focus.c:336
|
||||
msgid ""
|
||||
"Do not let applications receive\n"
|
||||
"the click used to focus windows."
|
||||
msgstr ""
|
||||
"Nenechat aplikaci přijmout ťuk\n"
|
||||
"myši k zaměření oken."
|
||||
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\n"
|
||||
"windows."
|
||||
msgstr ""
|
||||
"Automaticky zaměřit\n"
|
||||
"nová okna."
|
||||
msgid "Automatically focus new windows"
|
||||
msgstr "Automaticky zaměřit nová okna"
|
||||
|
||||
#: ../Focus.c:363
|
||||
msgid "Window Focus Preferences"
|
||||
@@ -1196,8 +1185,8 @@ msgid "No"
|
||||
msgstr "Ne"
|
||||
|
||||
#: ../Menu.c:1347
|
||||
msgid "Yes, don't ask again."
|
||||
msgstr "Ano, neptejte se víc."
|
||||
msgid "Yes, don't ask again"
|
||||
msgstr "Ano, neptejte se víc"
|
||||
|
||||
#: ../Menu.c:1514 ../Menu.c:1521
|
||||
#, c-format
|
||||
@@ -1543,12 +1532,8 @@ msgid "internal help"
|
||||
msgstr "interní nápovědu"
|
||||
|
||||
#: ../Preferences.c:292
|
||||
msgid ""
|
||||
"Raise window when switching\n"
|
||||
"focus with keyboard."
|
||||
msgstr ""
|
||||
"Při změně zaměření přes\n"
|
||||
" klávesnici zdvihnout okno."
|
||||
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 ""
|
||||
@@ -1965,30 +1950,20 @@ msgid "Workspace Navigation"
|
||||
msgstr "Orientace v plochách"
|
||||
|
||||
#: ../Workspace.c:183
|
||||
msgid ""
|
||||
"wrap to the first workspace after the\n"
|
||||
"last workspace."
|
||||
msgstr ""
|
||||
"Za poslední pracovní plochou přepnout\n"
|
||||
"na první a opačně."
|
||||
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\n"
|
||||
"při přetažení aplikace přes hranu plochy."
|
||||
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."
|
||||
msgid "Automatically create new workspaces"
|
||||
msgstr "Automaticky vytvářet nové pracovní plochy"
|
||||
|
||||
#: ../Workspace.c:250
|
||||
msgid ""
|
||||
"Position of workspace\n"
|
||||
"name display"
|
||||
msgstr ""
|
||||
"Pozice názvu indikátoru\n"
|
||||
" pracovní plochy:"
|
||||
msgid "Position of workspace name display"
|
||||
msgstr "Pozice názvu indikátoru pracovní plochy:"
|
||||
|
||||
#: ../Workspace.c:269
|
||||
msgid "Disable"
|
||||
|
||||
+25
-38
@@ -419,40 +419,39 @@ msgid "Input Focus Mode"
|
||||
msgstr "Eingabefokus-Modus"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:201
|
||||
msgid "Manual: Click on the window to set keyboard input focus."
|
||||
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."
|
||||
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 in the window..."
|
||||
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."
|
||||
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."
|
||||
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 "msec"
|
||||
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."
|
||||
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."
|
||||
msgid "Automatically focus new windows"
|
||||
msgstr "Neue Fenster automatisch auswählen"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:333
|
||||
@@ -703,14 +702,12 @@ msgid "Focus previous window"
|
||||
msgstr "Vorheriges Fenster"
|
||||
|
||||
#: ../../WPrefs.app/KeyboardShortcuts.c:488
|
||||
#, fuzzy
|
||||
msgid "Focus next group window"
|
||||
msgstr "Nächstes Fenster"
|
||||
msgstr ""
|
||||
|
||||
#: ../../WPrefs.app/KeyboardShortcuts.c:489
|
||||
#, fuzzy
|
||||
msgid "Focus previous group window"
|
||||
msgstr "Vorheriges Fenster"
|
||||
msgstr ""
|
||||
|
||||
#: ../../WPrefs.app/KeyboardShortcuts.c:490
|
||||
msgid "Switch to next workspace"
|
||||
@@ -822,7 +819,7 @@ msgstr "Clip in den Vor-/Hintergrund"
|
||||
|
||||
#: ../../WPrefs.app/KeyboardShortcuts.c:518
|
||||
msgid "Toggle keyboard language"
|
||||
msgstr "Tastatursbelegung ändern"
|
||||
msgstr "Tastaturbelegung ändern"
|
||||
|
||||
#: ../../WPrefs.app/KeyboardShortcuts.c:532
|
||||
msgid "Shortcut"
|
||||
@@ -1207,7 +1204,7 @@ msgid "No"
|
||||
msgstr "Nein"
|
||||
|
||||
#: ../../WPrefs.app/Menu.c:1282
|
||||
msgid "Yes, don't ask again."
|
||||
msgid "Yes, don't ask again"
|
||||
msgstr "Ja, alle"
|
||||
|
||||
#: ../../WPrefs.app/Menu.c:1437
|
||||
@@ -1584,12 +1581,8 @@ msgid "internal help"
|
||||
msgstr "interne Hilfe"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:278
|
||||
msgid ""
|
||||
"Raise window when switching\n"
|
||||
"focus with keyboard."
|
||||
msgstr ""
|
||||
"Aktives Fenster nach Tastatur-\n"
|
||||
"Fokuswechsel oben."
|
||||
msgid "Raise window when switching focus with keyboard"
|
||||
msgstr "Aktives Fenster nach Tastatur-Fokuswechsel oben"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:284
|
||||
msgid ""
|
||||
@@ -1991,26 +1984,20 @@ 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\n"
|
||||
"die erste."
|
||||
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."
|
||||
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."
|
||||
msgid "Automatically create new workspaces"
|
||||
msgstr "Automatisch neue Arbeitsflächen erstellen"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:226
|
||||
msgid ""
|
||||
"Position of workspace\n"
|
||||
"name display"
|
||||
msgstr ""
|
||||
"Position des Namens\n"
|
||||
"der Arbeitsfläche"
|
||||
msgid "Position of workspace name display"
|
||||
msgstr "Position des Namens der Arbeitsfläche"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:245
|
||||
msgid "Disable"
|
||||
|
||||
+24
-51
@@ -427,7 +427,7 @@ 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."
|
||||
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"
|
||||
@@ -435,38 +435,32 @@ msgstr ""
|
||||
"Auto: Dar foco a la ventana bajo el puntero del ratón"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:243
|
||||
msgid "Install colormap in the window..."
|
||||
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."
|
||||
msgid "...that has the input focus"
|
||||
msgstr "...que tiene el foco de teclado"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:253
|
||||
msgid "...that is under the mouse pointer."
|
||||
msgstr "...que está bajo el ratón."
|
||||
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 "msec"
|
||||
msgstr "mseg"
|
||||
msgid "ms"
|
||||
msgstr "ms"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:336
|
||||
msgid ""
|
||||
"Do not let applications receive\n"
|
||||
"the click used to focus windows."
|
||||
msgstr "No permitir a las aplicaciones recibir|n"
|
||||
"el click usado para darle foco."
|
||||
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\n"
|
||||
"windows."
|
||||
msgstr "Dar foco automáticamente a las\n"
|
||||
"ventanas nuevas."
|
||||
msgid "Automatically focus new windows"
|
||||
msgstr "Dar foco automáticamente a las ventanas nuevas"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:363
|
||||
msgid "Window Focus Preferences"
|
||||
@@ -1232,8 +1226,8 @@ msgid "No"
|
||||
msgstr "No"
|
||||
|
||||
#: ../../WPrefs.app/Menu.c:1407
|
||||
msgid "Yes, don't ask again."
|
||||
msgstr "Sí, no preguntarme más."
|
||||
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
|
||||
@@ -1587,12 +1581,8 @@ msgid "internal help"
|
||||
msgstr "ayuda interna"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:292
|
||||
msgid ""
|
||||
"Raise window when switching\n"
|
||||
"focus with keyboard."
|
||||
msgstr ""
|
||||
"Alzar ventana cuando se cambia\n"
|
||||
"el foco con teclado."
|
||||
msgid "Raise window when switching focus with keyboard"
|
||||
msgstr "Alzar ventana cuando se cambia el foco con teclado"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:298
|
||||
msgid ""
|
||||
@@ -2013,28 +2003,20 @@ msgid "Workspace Navigation"
|
||||
msgstr "Navegación de Áreas"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:183
|
||||
msgid ""
|
||||
"wrap to the first workspace after the\n"
|
||||
"last workspace."
|
||||
msgstr ""
|
||||
"ir para la primera área de trabajo\n"
|
||||
"después de la última."
|
||||
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."
|
||||
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."
|
||||
msgid "Automatically create new workspaces"
|
||||
msgstr "Crear nuevas áreas de trabajo automáticamente"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:250
|
||||
msgid ""
|
||||
"Position of workspace\n"
|
||||
"name display"
|
||||
msgstr ""
|
||||
"Posición del nombre del\n"
|
||||
"área de trabajo"
|
||||
msgid "Position of workspace name display"
|
||||
msgstr "Posición del nombre del área de trabajo"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:269
|
||||
msgid "Disable"
|
||||
@@ -2147,15 +2129,6 @@ 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 ""
|
||||
"Set keyboard input focus to\n"
|
||||
"the window under the mouse pointer,\n"
|
||||
"including the root window."
|
||||
msgstr ""
|
||||
"Dar foco a la ventana\n"
|
||||
"bajo el puntero del ratón,\n"
|
||||
"incluyendo la ventana fondo."
|
||||
|
||||
msgid "Click window to focus"
|
||||
msgstr "Pinchar la ventana"
|
||||
|
||||
|
||||
+1
-1
@@ -1671,7 +1671,7 @@ msgstr "Keela tiitliriba"
|
||||
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"
|
||||
"without its titlebar, press Control+Esc (or the\n"
|
||||
"equivalent shortcut, if you changed the default\n"
|
||||
"settings)."
|
||||
msgstr ""
|
||||
|
||||
+24
-51
@@ -644,47 +644,39 @@ 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."
|
||||
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."
|
||||
msgstr "Automaattinen: Aseta hiiren osoittimen alla oleva ikkuna näppäimistösyötön kohteeksi"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:244
|
||||
msgid "Install colormap in the window..."
|
||||
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."
|
||||
msgid "...that has the input focus"
|
||||
msgstr "...jolla on syöttökohdistus"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:254
|
||||
msgid "...that is under the mouse pointer."
|
||||
msgstr "...joka on hiiren osoittimen alla."
|
||||
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 "msec"
|
||||
msgid "ms"
|
||||
msgstr "ms"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:337
|
||||
msgid ""
|
||||
"Do not let applications receive\n"
|
||||
"the click used to focus windows."
|
||||
msgstr ""
|
||||
"Älä välitä sovelluksille ikkunan\n"
|
||||
"aktivointipainallusta."
|
||||
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\n"
|
||||
"windows."
|
||||
msgstr ""
|
||||
"Aktivoi uudet ikkunat\n"
|
||||
"automaattisesti."
|
||||
msgid "Automatically focus new windows"
|
||||
msgstr "Aktivoi uudet ikkunat automaattisesti"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:364
|
||||
msgid "Window Focus Preferences"
|
||||
@@ -1404,8 +1396,8 @@ msgid "No"
|
||||
msgstr "Ei"
|
||||
|
||||
#: ../../WPrefs.app/Menu.c:1347
|
||||
msgid "Yes, don't ask again."
|
||||
msgstr "Kyllä, älä kysy enää."
|
||||
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
|
||||
@@ -1758,12 +1750,8 @@ msgid "internal help"
|
||||
msgstr "sisäinen apu"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:292
|
||||
msgid ""
|
||||
"Raise window when switching\n"
|
||||
"focus with keyboard."
|
||||
msgstr ""
|
||||
"Nosta ikkuna, kun aktiivista ikku-\n"
|
||||
"naa vaihdetaan näppäimistöllä."
|
||||
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 ""
|
||||
@@ -2047,26 +2035,20 @@ msgid "Workspace Navigation"
|
||||
msgstr "Työtilanavigointi"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:183
|
||||
msgid ""
|
||||
"wrap to the first workspace after the\n"
|
||||
"last workspace."
|
||||
msgstr "siirry ensimmäiseen työtilaan siirryttäessä viimeisen yli."
|
||||
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ä."
|
||||
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."
|
||||
msgid "Automatically create new workspaces"
|
||||
msgstr "Luo uusia työtiloja automaattisesti"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:250
|
||||
msgid ""
|
||||
"Position of workspace\n"
|
||||
"name display"
|
||||
msgstr ""
|
||||
"Työtilan nimi-\n"
|
||||
"näytön paikka"
|
||||
msgid "Position of workspace name display"
|
||||
msgstr "Työtilan nimi-näytön paikka"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:269
|
||||
msgid "Disable"
|
||||
@@ -2131,15 +2113,6 @@ msgstr ""
|
||||
#~ msgid "Disable cycling color highlighting of icons"
|
||||
#~ msgstr "Ei kuvakkeiden korostusta värikierrolla."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Set keyboard input focus to\n"
|
||||
#~ "the window under the mouse pointer,\n"
|
||||
#~ "including the root window."
|
||||
#~ msgstr ""
|
||||
#~ "Aseta hiiren osoittimen alla oleva\n"
|
||||
#~ "ikkuna, juuri-ikkuna mukaanlukien,\n"
|
||||
#~ "näppäimistösyötön kohteeksi."
|
||||
|
||||
#~ msgid "Click window to focus"
|
||||
#~ msgstr "Napauta ikkunaa kohdistaaksesi"
|
||||
|
||||
|
||||
+23
-41
@@ -443,23 +443,23 @@ 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."
|
||||
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."
|
||||
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 in the window..."
|
||||
msgid "Install colormap from the window..."
|
||||
msgstr "Palette de couleurs utilisée"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:248
|
||||
msgid "...that has the input focus."
|
||||
msgid "...that has the input focus"
|
||||
msgstr "fenêtre active"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:253
|
||||
msgid "...that is under the mouse pointer."
|
||||
msgid "...that's under the mouse pointer"
|
||||
msgstr "fenêtre pointée par la souris"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:262
|
||||
@@ -467,24 +467,16 @@ 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 "msec"
|
||||
msgstr "msec"
|
||||
msgid "ms"
|
||||
msgstr "ms"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:336
|
||||
msgid ""
|
||||
"Do not let applications receive\n"
|
||||
"the click used to focus windows."
|
||||
msgstr ""
|
||||
"L'application ne reçoit pas le clic\n"
|
||||
"utilisé pour activer la fenêtre."
|
||||
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\n"
|
||||
"windows."
|
||||
msgstr ""
|
||||
"Activer automatiquement les\n"
|
||||
"nouvelles fenêtres."
|
||||
msgid "Automatically focus new windows"
|
||||
msgstr "Activer automatiquement les nouvelles fenêtres"
|
||||
|
||||
#: ../../WPrefs.app/Focus.c:363
|
||||
msgid "Window Focus Preferences"
|
||||
@@ -1329,8 +1321,8 @@ msgid "No"
|
||||
msgstr "Non"
|
||||
|
||||
#: ../../WPrefs.app/Menu.c:1407
|
||||
msgid "Yes, don't ask again."
|
||||
msgstr "Oui, ne plus me demander."
|
||||
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
|
||||
@@ -1685,12 +1677,8 @@ msgid "internal help"
|
||||
msgstr "Aide interne"
|
||||
|
||||
#: ../../WPrefs.app/Preferences.c:292
|
||||
msgid ""
|
||||
"Raise window when switching\n"
|
||||
"focus with keyboard."
|
||||
msgstr ""
|
||||
"Une fenêtre activée par le\n"
|
||||
"clavier passe devant."
|
||||
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 ""
|
||||
@@ -2129,26 +2117,20 @@ msgid "Workspace Navigation"
|
||||
msgstr "Navigation entre bureaux"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:183
|
||||
msgid ""
|
||||
"wrap to the first workspace after the\n"
|
||||
"last workspace."
|
||||
msgstr "Revenir au premier bureau après le dernier."
|
||||
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."
|
||||
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."
|
||||
msgid "Automatically create new workspaces"
|
||||
msgstr "Créer automatiquement d'autres bureaux"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:250
|
||||
msgid ""
|
||||
"Position of workspace\n"
|
||||
"name display"
|
||||
msgstr ""
|
||||
"Position pour l'affichage\n"
|
||||
"du nom du bureau"
|
||||
msgid "Position of workspace name display"
|
||||
msgstr "Position pour l'affichage du nom du bureau"
|
||||
|
||||
#: ../../WPrefs.app/Workspace.c:269
|
||||
msgid "Disable"
|
||||
|
||||
+2683
File diff suppressed because it is too large
Load Diff
+13
-35
@@ -110,31 +110,12 @@ 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 ""
|
||||
"Click on the window to set\n"
|
||||
"keyboard input focus."
|
||||
msgstr ""
|
||||
"Kliknite na prozor da\n"
|
||||
"postavite fokus"
|
||||
msgid "Manual: Click on the window to set keyboard input focus"
|
||||
msgstr "Kliknite na prozor da postavite fokus"
|
||||
|
||||
#: ../../WPrefs/Focus.c:194
|
||||
msgid ""
|
||||
"Set keyboard input focus to\n"
|
||||
"the window under the mouse pointer,\n"
|
||||
"including the root window."
|
||||
msgstr ""
|
||||
"Postavljanje fokusa na prozor\n"
|
||||
"ispod pokazivača miša,\n"
|
||||
"uključujući i root prozor."
|
||||
|
||||
#: ../../WPrefs/Focus.c:199
|
||||
msgid ""
|
||||
"Set keyboard input focus to\n"
|
||||
"the window under the mouse pointer,\n"
|
||||
"except the root window."
|
||||
msgstr ""
|
||||
"Postavljanje fokusa na prozor ispod\n"
|
||||
"pokazivača miša, osim root prozora."
|
||||
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"
|
||||
@@ -153,15 +134,15 @@ msgid "\"Sloppy\" focus"
|
||||
msgstr "\"Sloppy\" fokus"
|
||||
|
||||
#: ../../WPrefs/Focus.c:265
|
||||
msgid "Install colormap in the window..."
|
||||
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."
|
||||
msgid "...that has the input focus"
|
||||
msgstr "što ima fokus"
|
||||
|
||||
#: ../../WPrefs/Focus.c:275
|
||||
msgid "...that is under the mouse pointer."
|
||||
msgid "...that's under the mouse pointer"
|
||||
msgstr "što je ispod kursora"
|
||||
|
||||
#: ../../WPrefs/Focus.c:284
|
||||
@@ -169,15 +150,15 @@ msgid "Automatic Window Raise Delay"
|
||||
msgstr "Automatsko zadržavanje podizanja prozora"
|
||||
|
||||
#: ../../WPrefs/Focus.c:341
|
||||
msgid "msec"
|
||||
msgstr "msec"
|
||||
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."
|
||||
msgid "Automatically focus new windows"
|
||||
msgstr "Automatski fokusiraj nove prozore"
|
||||
|
||||
#: ../../WPrefs/Focus.c:385
|
||||
@@ -796,8 +777,8 @@ msgid "application/dock icons"
|
||||
msgstr "aplikacijske/dock ikone"
|
||||
|
||||
#: ../../WPrefs/Preferences.c:204
|
||||
msgid "Raise window when switching focus with keyboard (CirculateRaise)."
|
||||
msgstr "Podigni prozor pri mjenjanju fokusa tastaturom."
|
||||
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."
|
||||
@@ -1207,9 +1188,6 @@ msgstr "ne mogu inicijalizirati aplikaciju"
|
||||
# msgid "WindowMaker domain (%s) is corrupted!"
|
||||
# msgstr "WindowMaker domena (%s) je oštećena!"
|
||||
#
|
||||
# msgid "Raise window when switching focus with keyboard."
|
||||
# msgstr "Podići prozor pri mjenjanju fokusa tastaturom."
|
||||
#
|
||||
# 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."
|
||||
#
|
||||
|
||||
+31
-35
@@ -383,7 +383,7 @@ msgid "Before auto-collapsing"
|
||||
msgstr "Összecsukás előtt"
|
||||
|
||||
#: ../../../wmaker-crm/WPrefs.app/Docks.c:57
|
||||
msgid "Before auto-raise"
|
||||
msgid "Before auto-raising"
|
||||
msgstr "Előrehozás előtt"
|
||||
|
||||
#: ../../../wmaker-crm/WPrefs.app/Docks.c:58
|
||||
@@ -401,7 +401,7 @@ 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 "msec"
|
||||
msgid "ms"
|
||||
msgstr "ms"
|
||||
|
||||
#: ../../../wmaker-crm/WPrefs.app/Docks.c:244
|
||||
@@ -537,44 +537,40 @@ 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."
|
||||
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."
|
||||
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 in the window..."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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\n"
|
||||
"focus with keyboard."
|
||||
msgstr ""
|
||||
"Billentyűvel váltott fókusznál\n"
|
||||
"az aktív ablak előtérbe is kerül."
|
||||
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"
|
||||
@@ -1457,8 +1453,8 @@ msgid "No"
|
||||
msgstr "Nem"
|
||||
|
||||
#: ../../../wmaker-crm/WPrefs.app/Menu.c:1302
|
||||
msgid "Yes, don't ask again."
|
||||
msgstr "Igen, a többire is."
|
||||
msgid "Yes, don't ask again"
|
||||
msgstr "Igen, a többire is"
|
||||
|
||||
#: ../../../wmaker-crm/WPrefs.app/Menu.c:1440
|
||||
#, c-format
|
||||
@@ -1865,16 +1861,16 @@ msgid "AppIcon bouncing"
|
||||
msgstr "Appikon pattogás"
|
||||
|
||||
#: ../../../wmaker-crm/WPrefs.app/Preferences.c:279
|
||||
msgid "Disable AppIcon bounce."
|
||||
msgstr "Patogás letiltása."
|
||||
msgid "Disable AppIcon bounce"
|
||||
msgstr "Patogás letiltása"
|
||||
|
||||
#: ../../../wmaker-crm/WPrefs.app/Preferences.c:284
|
||||
msgid "Bounce AppIcon when the application wants attention."
|
||||
msgstr "Az appikon pattog ha az alkalmazás figyelmet kér."
|
||||
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 AppIcons when bouncing."
|
||||
msgstr "Ikonok előre hozása pattogáskor."
|
||||
msgid "Raise AppIcon when bouncing"
|
||||
msgstr "Ikonok előre hozása pattogáskor"
|
||||
|
||||
#: ../../../wmaker-crm/WPrefs.app/Preferences.c:298
|
||||
msgid "Workspace border"
|
||||
@@ -2269,16 +2265,16 @@ 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."
|
||||
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."
|
||||
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."
|
||||
msgid "Automatically create new workspaces"
|
||||
msgstr "Új munkafelületek automatikus létrehozása"
|
||||
|
||||
#. WMSetLabelTextAlignment(panel->posL, WARight);
|
||||
#: ../../../wmaker-crm/WPrefs.app/Workspace.c:172
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user