1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-03-11 12:05:48 +01:00

1250 Commits

Author SHA1 Message Date
dan
048b43aea4 - fixed a frame size in WPrefs menu editor
- removed // comments
- commented out printfs in unfinished selection code
2002-07-01 23:52:22 +00:00
kojima
579eb01c6c applied patch from Ryosuke Nanba <rna@cyber.email.ne.jp>
WindowMaker 0.80 crashes (SIGSEGV) on deiconifying the miniwindow of
Mozilla 0.98, under following condition.   - running ATOK X for Linux *
  - create new Mozilla Window
  - using ATOK on Mozilla (make "mozilla-im-status" window visible)
2002-05-25 03:01:32 +00:00
kojima
ca212985df fixed typo in menus... 2002-05-11 00:44:03 +00:00
dan
c32806ae14 updated some .cvsignore files 2002-04-11 20:41:00 +00:00
dan
ee5b28b0af fixed a buffer overflow 2002-04-11 20:38:05 +00:00
dan
750917986e - Added WMGetTextFieldDelegate()
- Fixed a problem with drawing the return arrow on buttons when disabled
2002-04-03 00:51:36 +00:00
dan
6e72c20248 - Added WMSetButtonImageDimsWhenDisabled() and WMGetButtonEnabled()
- Cleaned-up the header files of functions/vars declared but not implemented
2002-03-29 01:24:12 +00:00
dan
ad0ad5af22 Added 2 functions to retrieve the default system fonts:
WMDefaultSystemFont(WMScreen *scr) and WMDefaultBoldSystemFont(WMScreen *scr)
2002-03-28 16:22:53 +00:00
dan
e4a53ba71e fixed some Bool flags passed to WINgs functions to always set 1 or 0 values internally 2002-03-28 04:20:30 +00:00
kojima
208ee16849 updated spanish po 2002-03-24 22:00:24 +00:00
dan
f9acc9313e commented out some declared but never defined functions and global vars 2002-03-24 21:57:21 +00:00
kojima
92fb96eb69 - Fixed bug with windows that have WM_HINTS.take_focus = False. These windows
will not receive focus at all.
2002-03-24 03:18:09 +00:00
dan
18d347ecd5 removed update-autoconf. use autogen.sh 2002-03-20 01:29:17 +00:00
dan
97e20d94de fixed textfields regarding interpretation of special keys with modifiers 2002-03-14 22:20:25 +00:00
dan
65e65c4e9d added ability to enable/disable individual WMTabViewItems 2002-03-14 12:28:52 +00:00
dan
84fa789cd6 - Fixed WMGetViewScreenPosition() to consider the window decorations. 2002-03-04 08:52:49 +00:00
dan
efcf27f854 fixed autogen.sh to include deps in Makefile.in 2002-03-04 06:28:14 +00:00
dan
5fe90167a3 fixed autoconf warning 2002-03-03 20:33:44 +00:00
dan
f857012f7a gah! the putenv() stuff was not causing memleaks. Only 2 memleaks after all (1 serious, 1 minor). Both did sum up in time 2002-03-01 10:33:14 +00:00
dan
efb0090f8c fixed some memleaks (1 serious, 5 minor) 2002-03-01 10:03:35 +00:00
dan
1cd1f16c3c fixed bug in WMSetButtonEnabled and WMSetButtonSelected 2002-02-28 11:01:39 +00:00
kojima
0c1881e224 added french po 2002-02-26 14:57:24 +00:00
dan
5bb35d94a5 fixed a bug in wdread 2002-02-23 00:02:17 +00:00
kojima
321bb04586 little change on menus 2002-02-20 23:38:25 +00:00
dan
77b8fe05ac - removed configure.in. use only autoconf 2.5x fom now
- fixed a bug and memleak in WMBox code.
- updated some translations
- fixed some bug in the menu code about drawing disabled entries.
- fixed Clip menu not to allow selecting of "Autoraise" if "Keep On Top"
  is active.
- Added a "Browse" button to the menu editor in WPrefs where a program to run
  is specified (not finished).
2002-02-20 22:22:40 +00:00
kojima
9466c00f2b update danish translations 2002-02-20 21:35:46 +00:00
kojima
a8950af8ac fixed segfault with incomplete WM_CLASS 2002-02-20 15:01:44 +00:00
kojima
58e719654f added czech translations 2002-02-18 13:50:30 +00:00
dan
ad58481487 reverted latest german update. 2002-02-17 22:33:22 +00:00
kojima
5402fccd1e cleanup oops 2002-02-16 04:56:45 +00:00
kojima
cf7859d145 some incomplete xinerama stuff 2002-02-16 04:53:33 +00:00
kojima
5db8b5660f cleaning the house today 2002-02-15 21:34:46 +00:00
kojima
5873385d32 fix for soemthing wrong with piped menus 2002-02-15 21:30:42 +00:00
kojima
a26b723c5a something i dont remember 2002-02-15 21:27:41 +00:00
kojima
bc3d012e7c updated german pots 2002-02-15 21:24:41 +00:00
kojima
c08b3c5f32 fixed icon scaling 2002-02-15 21:22:46 +00:00
dan
f37b4cf5d0 - Fixed a bug that crashed wmaker when selecting the "Start alternate window
manager" option in the crashing dialog panel.
- Window Maker will now use the WINDOWMAKER_ALT_WM environment variable (if
  it is defined) to overwrite the default hardcoded fallback window manager.
2002-02-01 01:20:15 +00:00
id
06f1bf91a9 fix my mail, maliwan is dead 2002-01-31 10:30:06 +00:00
id
8b5f31ad8b fix an icon 2002-01-27 05:59:29 +00:00
id
2cc90e649a add an icon 2002-01-27 05:54:17 +00:00
id
9d41f432b9 add and fix icons 2002-01-26 15:52:22 +00:00
id
b4f540ddd6 add and fix icons 2002-01-26 15:52:22 +00:00
id
03f534c0bf add an icon 2002-01-26 04:24:12 +00:00
dan
9078b1a5a7 forgot this 2002-01-25 14:40:09 +00:00
dan
da02e76051 added better proplist warnings when reading non-digit proplist data and fixed screwed Changelog after last commit. 2002-01-25 14:39:37 +00:00
kojima
9c19d14d1a added greek flag pixmap 2002-01-25 14:10:30 +00:00
kojima
bc88390918 added contrib patch for resizing/moving windows with yubn keys 2002-01-25 13:51:54 +00:00
kojima
a1b9bf23a9 fixed non-transparent bug of xrender transparent windows 2002-01-23 19:36:43 +00:00
dan
511a06628b - fixed crash when saving window attributes
- updated german translation
- small fix for the selection code in WINGs (possible memleak)
- added support for the ukrainian language in wsetfont
  (Bohdan Vlasyuk <bohdan@bodq.vstu.vinnica.ua>)
2002-01-17 03:07:28 +00:00
dan
8a25fdc672 updated german wprefs translation 2002-01-11 21:57:20 +00:00
dan
a1a7ba7689 Fixed problem with not saving all windows in a session when the shared
application icon is enabled (only one instance/shared application was
saved)
2002-01-11 05:08:44 +00:00
dan
4f84c48ccb updated de.po and fixed a typo 2002-01-10 06:03:06 +00:00
dan
9b63a77d6a a few changes in the selection code 2002-01-07 06:11:34 +00:00
dan
89a32e3663 Fixed some focus related problems when switching workspaces, including the
infamous problem with losing focus when switching to an empty workspace and
back
2002-01-05 06:16:10 +00:00
dan
501c3f48b8 - Fixed labels not to display '\n' as a character if multiple '\n' are passed
- Fixed Legal Panel not to display rectangles in place of new lines.
- Removed some obsoleted/unused files from cvs
- Fixed a bug with Sloppy focus when changing workspaces (from a debian user
  bug report/patch)
2002-01-05 01:35:30 +00:00
dan
cab71ba6a1 - Fixed text in info panel for multibyte (Seiichi SATO <ssato@sh.rim.or.jp>)
- Separated the font caches for normal fonts and fontsets in WINGs (they can
  have the same names and collide in the cache giving unwanted results)
- Updated the years in the copyright notices
2002-01-04 07:32:37 +00:00
dan
96f8ab167f Added "Hide Others" to the window menu 2002-01-04 05:44:20 +00:00
dan
a8c7375623 Fixed problem with kcalc not having a miniaturize button 2002-01-04 00:30:11 +00:00
dan
365556b676 misc selection and textfield fixes 2002-01-02 17:45:40 +00:00
kojima
7b00d9ec12 added malay translation 2002-01-02 14:09:50 +00:00
dan
89cb6559cc - german po file for WINGs (Guido Scholz <guido.scholz@bayernline.de>)
- misc fixes in selection code in WINGs
- fix for a crash if WMState is missing on startup
2002-01-01 18:40:24 +00:00
id
372da5ca39 ok 2001-12-31 12:39:17 +00:00
id
514258fd35 fix again, perfect. 2001-12-31 12:34:51 +00:00
id
0b0002f75a fix an icon 2001-12-31 12:27:34 +00:00
dan
cf2322ee03 code cleanup 2001-12-30 05:07:12 +00:00
dan
c9dfd7f3a4 updated makefile for new icons. 2001-12-30 01:58:30 +00:00
dan
7eb705472f - Really fixed problem with keyboard shortcuts executed an every screen for
multihead systems.
- Fixed a wrong test in the selection code.
2001-12-30 01:50:46 +00:00
id
d35dd84ae5 change an icon 2001-12-29 21:31:29 +00:00
id
0613a758f4 add a jabber icon 2001-12-29 08:32:46 +00:00
dan
9e615bcff9 - Fixed a bug that crashed wmaker when closing a window if multiple screens
were managed by wmaker (Valery Kotchiev <aggregator@nospam.dk>)
- Fixed a problem that crashed wmaker when trying to read an unexisting
  WMState.<number> file on multihead system.
- Fixed problem with keyboard shortcuts executed an every screen for
  multihead systems.
2001-12-28 03:29:50 +00:00
kojima
9031641ba6 updated chinese translation 2001-12-26 11:32:41 +00:00
id
9bfa0b6efb Sorry, my heart was broken real bad. I am going to resign from my
job and I don't think I can still be able to be a part of project.
Thank you guys for everything.
2001-12-26 06:06:45 +00:00
dan
60409e290d small update 2001-12-22 21:18:15 +00:00
dan
03befcf729 - removed kbd shortcuts active during mouse window drag (enabled by a
recent commit), because it causes nasty problems. It needs fixing
  before reenabling (if they are possible at all)
2001-12-21 23:46:54 +00:00
dan
beb83f52fe updated NEWS 2001-12-21 23:30:39 +00:00
dan
99a5f0da0f few updates 2001-12-21 21:39:52 +00:00
dan
520a6cd0e4 a fix for the definable cursor code 2001-12-21 11:00:45 +00:00
dan
f968d88070 - Fixed problem with shared appicon on clients having an appmenu that
is created after the application has mapped its window(s).

This means that if you use wterm without an appmenu it will be able to
use shared appicons, but as soon as you start one with an appmenu they
will get separated appicons.
2001-12-21 00:48:41 +00:00
dan
e1ed96951b fixed bug with improper setting of root/titlebar cursor (definable cursors) 2001-12-20 22:31:13 +00:00
dan
41996df786 - Saving a domain file will first strip all entries that are also present in
the global domain as well and are exactly the same. This fixes a bug where
  settings from the global domain file were merged in the user domain file
  and further changes in the global domain file for those merged values was
  ignored making a system admin unable to set global defaults for all users
  using the global domains.
- Fixed bug with not extracting the icon from the client when using
  shared appicons.
- Added WMSubtractPLDictionaries() to WINGs (opposite for merging, it will
  remove all entries from dest if they are present in source and are exactly
  the same. Unique entries in dest and entries with different values from
  those present in source will be preserved).
2001-12-20 22:16:01 +00:00
kojima
932fcd1f37 kbd shortcuts active during mouse window drag 2001-12-20 19:12:19 +00:00
dan
cefdc204ba updated slovak locale files 2001-12-20 16:16:09 +00:00
dan
6f28d987a8 - Fixed problem with unhiding taht mapped windows from other workspaces
on the current workspace.
- Made apps with an application menu not to use a shared appicon.
2001-12-18 16:10:07 +00:00
dan
c8b3933c19 - Fixed xmms problem with shared appicons
- Fixed a problem with saving user defaults for windows after the shared
  appicon changes.
- Fixed GNUstep apps not to show 2 appicons.
2001-12-18 05:18:35 +00:00
dan
4140e6051f updated estonian translation 2001-12-17 22:28:47 +00:00
dan
f0664d1344 small update 2001-12-17 21:25:29 +00:00
dan
f4ef34b814 - Made dock/clip steal appicons of applications that were started from a
shell/xterm or from the main menu, if there is a docked appicon of that
  class that is not running at the time the app is launched.
- Added animation to show that the appicon was stolen by the dock (the way
  NEXTSTEP did - map an appicon as it normally would have been, then slide it
  to the position the docked appicon is).
- Updated the animation constants for scrolling/sliding/shading to better
  adapt to newer/faster machines. Also used wusleep(10) when the delay was 0
  to get rid of the jerky animation when there was no delay.
2001-12-17 21:21:59 +00:00
dan
90c77b1a45 - improved behaviour for the shared appicon thing.
- added a 'Bool recursive' flag to WMMergePLDictionaries() in WINGs
2001-12-17 14:46:31 +00:00
dan
672c42cc48 - removed the collapse appicons thing
- added real appicon sharing (apps of the same kind will have a single
  shared appicon).
2001-12-17 04:02:33 +00:00
kojima
739fd1a567 added || pipe menu for non-cached generated menus 2001-12-04 12:05:45 +00:00
dan
363290d919 updated po file list in configure.ac 2001-11-30 23:07:22 +00:00
kojima
235b4c6d25 added estonian translation 2001-11-30 13:25:46 +00:00
dan
bbc87bded6 fixed a bug introduced by the previous commit 2001-11-25 09:45:27 +00:00
dan
81a1f98ca5 - Mapping a new window that belongs to a running application that is hidden,
will unhide the application.
- removed a wsyserror() message when reading a property list from file
  (the programmer should decide if to give that message or just ignore).
2001-11-24 05:10:38 +00:00
dan
06b48596f5 - made the definable cursors feature available by default (removed the
compile time option)
2001-11-23 05:39:13 +00:00
dan
0c4dc1c24a - Deminiaturizing a window that is also shaded, will perform an unshade too.
(Note that this only applies to deminiaturizing shaded windows.
   Unhiding an application will keep the shaded/unshaded state of windows.)
2001-11-20 13:48:23 +00:00
dan
af287fb8eb - added strcasecmp() to WINGs (only on systems that don't have it)
- removed some redundant includes of ../src/config.h where wconfig.h
  is also included
2001-11-17 04:26:08 +00:00
dan
7688a9f626 - SIGTERM is now handled and saves the internal state before exiting (like
SIGHUP and SIGINT already do). Now a "kill wmaker_pid" will exit cleanly
  saving dock/clip/session information on exit.
2001-11-16 07:45:33 +00:00
dan
9f62c660d7 - Changelog update about latest fixes.
- Applied patch to fix gnome problems.
2001-11-15 02:52:51 +00:00
kojima
cc9abd6e7e fixed crash bug with empty menus 2001-11-14 13:18:26 +00:00
dan
72150b1da7 - Slovak .po file updates from (Jan Tomka <judas@linux.sk>)
- "Save Workspace state" confirmation switch on the exit dialog panels
  (based on a patch from Jan Tomka <judas@linux.sk>)
2001-11-05 23:19:46 +00:00
dan
b1565d01c4 misc fixes 2001-10-26 22:06:28 +00:00
dan
3b1961d40d New Czech locales from Jiri Hnidek <Jiri.Hnidek@vslib.cz> 2001-10-19 20:13:00 +00:00
dan
d7ffd46d89 updated Makefiles for locale generation to accomodate the latest changes in source structure that were introduced by adding property list handling code to WINGs 2001-10-11 08:19:58 +00:00
dan
8cb297a671 small cleanup 2001-10-10 18:52:14 +00:00
dan
4be9abcdbc - fixed compilation problem for systems that require -lintl for building WINGs
- removed redundant include/lib paths from the get-*-flags scripts
2001-10-10 01:02:34 +00:00
dan
75f790160b - Added ability to shade/unshade a window using the mouse wheel on the
window titlebar.
- Disabled the window birth zoom effect by default.
2001-10-09 03:35:45 +00:00
dan
4350cf540c Added french INSTALL file (wwp <subscript@free.fr>) 2001-10-08 19:21:14 +00:00
dan
dc9b99fe47 put back AM_PROG_LIBTOOL macro. some older automake/autoconf don't like the AC_PROG_LIBTOOL name, even they're aliases 2001-10-05 02:03:55 +00:00
dan
1dcb477fde replace old AM_PROG_LIBTOOL macro with AC_PROG_LIBTOOL 2001-10-05 01:55:51 +00:00
dan
7213271249 small update 2001-10-05 00:45:10 +00:00
dan
727f3e0529 added 2 missing files from distrib 2001-10-05 00:34:13 +00:00
dan
0321fad531 updated NEWS and ChangeLogs about new proplist code in WINGs before a new release 2001-10-04 23:59:44 +00:00
dan
33cc542e85 - Finished moving to the new proplist handling code in WINGs.
- Also tested the backward compatibility ability of the WINGs proplist code
  which seems to work quite well.

Starting with this moment, Window Maker no longer needs libPropList and is
now using the better and much more robust proplist code from WINGs. Also the
WINGs based proplist code is actively maintained while the old libPropList
code is practically dead and flawed by the fact that it borrowed concepts
from the UserDefaults which conflicted with the retain/release mechanism,
making some problems that libPropList had, practically unsolvable without a
complete redesign (which can be found in the more robust WINGs code).
2001-10-04 03:07:34 +00:00
dan
8bb50a6320 Added old libPropList compatibility through proplist-compat.h 2001-10-03 02:05:53 +00:00
dan
558d0fbd14 renamed proplist functions with better names 2001-10-02 00:45:25 +00:00
dan
2d6f757114 Fixed HAVE_STDLIB_H conflict in jpeglib.h 2001-09-18 11:48:15 +00:00
dan
0bf92703da Japanese language files update from Takeo Hashimoto <HashimotoTakeo@mac.com> 2001-09-17 21:10:48 +00:00
dan
0c365cfb9b Finished the proplist code. It's working now, but function names will change
for better naming.
2001-09-17 01:55:23 +00:00
dan
aedbe70f63 more updates to the proplist code 2001-09-14 00:24:15 +00:00
dan
e0f7284142 Fixed cvs code to compile 2001-09-12 23:32:58 +00:00
kojima
abc09951e1 begin wmspec stuff 2001-09-12 21:43:42 +00:00
dan
e9ce423d8c Added wcopy man page to cvs 2001-09-12 14:12:12 +00:00
dan
aae7c8b73a fixed configure check for c99 vsnprintf 2001-09-10 22:15:05 +00:00
kojima
1cd42480bf added test for C99 vsnprintf 2001-09-10 20:55:06 +00:00
kojima
e848fb0d74 fixed artifact pattern left in TrueColor dithering code (visible with
tiled gradients as wallpaper)
2001-09-10 17:23:14 +00:00
dan
680b9d7731 added snprintf.c to be linked in WINGs 2001-09-10 04:21:12 +00:00
dan
49e59ab367 more code for proplist handling (almost finished) 2001-09-10 03:56:00 +00:00
kojima
5ef342d905 fixed bug in positioning of window list menu when opened by kbd
internal code clean-up with notifications for window state change and other
stuff, also cleaned kde and gnome support in preparation for wm-spec support..
2001-09-06 21:42:28 +00:00
dan
86f3e2fdb1 more code for proplist handling 2001-09-06 14:16:11 +00:00
dan
e44cc81a03 definable cursor code updates from Jim Knoble <jmknoble@pobox.com> 2001-09-06 09:42:51 +00:00
dan
2d5a062064 preliminary code for property list manipulation 2001-09-06 00:55:18 +00:00
dan
44363ce805 new estonian po file 2001-09-05 12:33:05 +00:00
kojima
acdc0e3d6b added snprintf for backwards compat 2001-09-04 20:38:20 +00:00
kojima
dd9e7d6816 fallback wmaker.inst.in
added wcopy/wpaste scripts
2001-09-04 20:03:58 +00:00
kojima
5e6b9009a0 removed bogus patch 2001-09-04 20:02:17 +00:00
kojima
761f193b0a chinese plmenu 2001-09-04 20:00:42 +00:00
kojima
80fefd29e4 fixed crash bug on startup
added paste-launch on dock
2001-09-03 22:31:30 +00:00
dan
eecf75029f updated some .cvsignore files 2001-09-03 21:42:32 +00:00
kojima
f3e53e8a67 updated po file 2001-09-03 20:24:03 +00:00
kojima
9bfdc31051 update po files 2001-09-03 20:03:52 +00:00
dan
554f2a6842 Added spanish INSTALL file 2001-09-02 20:30:22 +00:00
dan
4a2ed2f09f new version of the 'single click' patch 2001-09-01 14:51:58 +00:00
dan
0ee6312164 A few bugfixes from users 2001-09-01 14:48:24 +00:00
dan
717392246a Small cleanup of the sigpipe handling code 2001-09-01 13:30:55 +00:00
dan
6b75506e52 small bugfixes. 2001-08-30 21:55:18 +00:00
kojima
92232f3a78 added input method stuff 2001-08-23 22:40:46 +00:00
kojima
64b168083f fixed menu editor crash when saving incomplete menus 2001-08-23 16:49:18 +00:00
kojima
fa994f627e fixed crash bug with WM_CLASS==NULL
etc
2001-08-20 18:11:40 +00:00
kojima
0e2ac9dd16 fixed crash when saving empty menu items in wprefs 2001-08-13 21:00:57 +00:00
kojima
0ee684f718 estonian translation 2001-08-06 14:19:37 +00:00
dan
e825f57f20 wrong change. reversing. =) 2001-08-02 15:09:47 +00:00
dan
a5f92da05c small change in the email notification script. checking how it works. 2001-08-02 15:07:07 +00:00
dan
41d939e32f *** empty log message *** 2001-07-30 21:47:24 +00:00
dan
c1f19bc9f7 support for the newer autoconf 2.5x 2001-07-30 21:44:15 +00:00
dan
d052b5a90c another missing file 2001-07-30 20:57:59 +00:00
dan
5908962cac added some missing files in cvs 2001-07-30 20:53:34 +00:00
dan
a1a6e2531d Patch to fix wsetfont for multibyte languages
sent by (Masahide -mac- NODA <mac@clave.gr.jp>)
2001-07-30 02:34:50 +00:00
dan
86c059db3b Update ja.po files (Takeo Hashimoto <HashimotoTakeo@mac.com>) 2001-07-26 20:15:08 +00:00
dan
46e12bffb6 Applied patch from Marcelo E. Magallon <marcelo.magallon@bigfoot.com>
to fix some more bash specific constructs in wsetfont.
2001-07-24 20:18:19 +00:00
dan
6c494f1a2e Added missing WINGs/po and doc/sk dirs/files from the released 0.65.1
tree, and updated Makefile.am and configure.in to build them too.
2001-07-24 12:05:09 +00:00
dan
c28d3d3ff9 Made cvs compilable (it was missing the following directories: WINGs/po
and doc/sk). They were disabled until added to cvs.
2001-07-23 23:57:12 +00:00
kojima
882b9a8e1c - s/sprintf/snprintf
- updated some po's
- fixed crash bug when removing WINDOWS_MENU or WORKSPACE_MENU from rootmenu
- some other stuff i forgot
2001-07-23 20:31:32 +00:00
dan
0931e14a5a Forgot to update Changelog with latest fixes. 2001-07-22 15:09:27 +00:00
dan
c687b42960 - Fixed some non-portable shell constructs used in installed scripts
(Johnny C. Lam <lamj@stat.cmu.edu>)
- Fixed crash with long titles in the window list menu
  (Alban Hertroys <dalroi@wit401310.student.utwente.nl>)
2001-07-21 20:42:04 +00:00
kojima
d4097e11c9 updated pot files 2001-07-12 22:04:12 +00:00
dan
8a6afcdcf6 Fixed a bug with the new compile time option for window numbers 2001-06-07 23:51:27 +00:00
kojima
3b00e8acaa added option to disable window enumeration 2001-06-07 14:48:34 +00:00
dan
271de3c9de Fixed a bug with the application number showing up even with the first
instance of the application.
2001-06-06 22:22:45 +00:00
kojima
d6feaa1c75 added None option to MoveDisplay and ResizeDisplay
fixed window instance enumeration bug
2001-06-06 19:48:31 +00:00
kojima
eb0e33e0f5 added None option to MoveDisplay and ResizeDisplay 2001-06-06 19:47:36 +00:00
kojima
7e1f0e1e48 fixed [joeyh@debian.org: Bug#99311: full screen maximization cuts off bottom 6 pixels] 2001-06-06 18:20:23 +00:00
dan
adfe32ea1f Changed the character-coding of plmenu.ja from ISO-2022-JP to EUC-JP - Seiichi SATO \<sato@cvs-net.co.jp\> 2001-05-31 18:08:06 +00:00
dan
058079bb19 updated estonian locale file 2001-05-30 22:37:07 +00:00
dan
0156c6f92e new italian po files. 2001-05-28 22:38:21 +00:00
dan
3ab16b3e40 Moved some string related functions from memory.c to string.c 2001-05-27 15:58:28 +00:00
dan
f955b4b61d updated the single click patch to conform with Window Maker 0.65.0's source
code

sent by: Daniel Richard G. <skunk@graphics.lcs.mit.edu>
2001-05-21 22:06:40 +00:00
dan
3fcfc9bc16 better wording for an option in the Expert panel. 2001-05-21 21:12:30 +00:00
dan
128403b487 - fixed problem with WINGs based apps exiting with a "X_RotateProperties"
related error when text was selected in a textfiled (this included
  WPrefs.app and Window Maker itself).
- replaced some malloc's with wmalloc's
2001-05-19 23:07:10 +00:00
kojima
60611fbd47 fixed bug in ScrollTableViewRowToVisible 2001-05-18 17:07:18 +00:00
kojima
7d64e19f5a fixed bug on previous bug fix for tableview overflow bug..
(yeh, i also think cvs should send only 1 mail/day to the list..)
2001-05-17 23:34:47 +00:00
dan
a4486f0cd9 Fixed compilation warning caused by wrong parameter passed to function. 2001-05-17 23:15:19 +00:00
kojima
22ae4f5a3c fixed tableview overflow bug 2001-05-17 22:30:38 +00:00
dan
bcf7358072 Fixed problem with alpha images showing a blue tint on big endian machines 2001-05-15 11:26:12 +00:00
kojima
b444894d88 finished removing focusfollowmouse from wprefs 2001-05-14 15:18:30 +00:00
kojima
205b3f35b9 removed FocusFollowMouse 2001-05-14 14:58:55 +00:00
dan
ab61c599f9 a small update 2001-05-13 23:22:21 +00:00
dan
430c12e2b2 - A few additions and enhancements to the Install script.
- Removed the --disable-sound option to the configure script.
2001-05-13 00:28:55 +00:00
dan
3208e193d7 chinese po files updates 2001-05-11 23:56:51 +00:00
dan
7848a2d03f updated estonian translation 2001-05-11 23:37:46 +00:00
dan
962d9407c1 added missing plmenu.ja to Makefile.am 2001-05-11 23:35:03 +00:00
dan
cf9975125d added notes about hermes library support for Window Maker 2001-05-10 22:45:27 +00:00
dan
28793346ab removed some C++ style comments 2001-05-10 22:24:35 +00:00
dan
19b49b3fc1 - Fixed not working Grayscale visual (was crashing)
- Fixed wrong display of images with alpha in StaticGray and GrayScale visuals
- Hermes lib is used now only to convert if the visual is TrueColor and no
  dithering is necesarry. This is because currently hermeslib doesn't
  support to convert to an indexed destination image (so it can't convert to
  PseudoColor, StaticGray and GreyScale visuals). It can convert to
  StaticColor since this visual uses masks as the TrueColor visual, but
  without dithering. Also hermeslib only supports dithering for just 2
  combinations of source/destination bits/masks, none of which are useful
  for wrlib, so no conversion that needs dithering is currently done
  through hermeslib.
2001-05-10 21:31:13 +00:00
dan
ff5680d010 Fixed displaying of images with alpha (broken by the previous commit).
The fix still doesn't look right (hermes seems to do weird things internally,
and there is no documentation for it)

People with big endian machines please test if it works for you
(install hermes lib first).
Then try to start wmaker in different screen depths (15, 16, 24, 32)
and check if there are depths that do not work (either crash, or
display other colors than you expect).

Little endian machines seem ok.
2001-05-10 15:39:02 +00:00
dan
309a9163bd Fixed calls to hermes lib to work correctly with all depths 2001-05-10 14:28:50 +00:00
dan
ddde229665 - fixed speckles (white dots) on dithered images (bug still present on the
PowerPC architecture, because on LinuxPPC char is unsigned by default, not
  signed like on the other platforms).
  Bug fixed by Philip Derrin <philipd@student.unsw.edu.au>
- miscelaneous bug fixes

We would like people with cvs access experimenting the white 'speckles' on
images to test if they still have the problem.
2001-05-10 00:16:28 +00:00
dan
19ad865f49 Fixed scrolling direction with mouse wheel for horizontal scrollers 2001-05-09 00:37:07 +00:00
dan
41c0e64eac better wording for an option 2001-05-04 02:04:13 +00:00
dan
e826a4122e - client supplied icons that were saved by Window Maker in the directory
~/GNUstep/.AppInfo/WindowMaker/ will be recreated if missing when the
  application starts.
- fixed a small memleak when the client supplied icon was extracted and saved.

Check NEWS on how to fix your old broken XPM's saved to
~/GNUstep/.AppInfo/WindowMaker
2001-04-29 21:21:39 +00:00
dan
0616167b0f - fixed a bug that made the scroller knob jump backwards when dragged (this
bug had no relation with the behavior that #define STRICT_NEXT_BEHAVIOUR
  attempts to accomplish).
2001-04-29 03:24:17 +00:00
dan
3bde6495a3 - Removed the following 3 options from configuration: SelectWindowsMouseButton,
WindowListMouseButton and ApplicationMenuMouseButton.
- Added 4 options to the configuration file for binding workspace actions to
  mouse buttons: MouseLeftButtonAction, MouseMiddleButtonAction,
  MouseRightButtonAction and MouseWheelAction. They replace the above 3
  removed options, but use a different semantic.
- mouse wheel action is runtime configurable now.

Read details about this in NEWS.
2001-04-27 23:41:17 +00:00
dan
649a7ac82c - fixed a bug in the icon chooser dialog that made the selected icon look
wrong if it had alpha blending.
- fixed a bug in WMReparentWidget()
- added WMReparentWidget() to WINGs.h
2001-04-26 02:45:28 +00:00
dan
86154ba01d A few miscelaneous fixes 2001-04-25 02:03:08 +00:00
dan
2eb1f26644 Renamed WMGetApplicationIconBlendedPixmap() to
WMCreateApplicationIconBlendedPixmap() to avoid confusion.
This is because this function does generate a new WMPixmap from the
available icon image by combining it with the specified color and you
need to call WMReleasePixmap() on the generated pixmap after you're
done with it.
This is unlike the case of WMGetApplicationIconPixmap() where it just
returns a pointer to the existing application icon pixmap that was set
before and where you don't need to release it after you're done working
with it.
To avoid this confusion about when you need to release and when not,
one is using Get (get existing, no release needed), while the other is
now using Create (generate a new pixmap, release required) in their
name.

Since this change was made to a function that was just added to the API
in the previous commit, no modification is needed to the existing
applications that use WINGs.
2001-04-24 03:35:02 +00:00
dan
4fb6cd1b1e Removed the last commit comment (a very lenghty one) that was added by
cvs to this file, probably because of the presence of a RCS $Id entry
2001-04-22 02:15:23 +00:00
dan
36e46831e0 For libwraster:
---------------

- Added retain/release mechanism to RImage by adding RRetainImage() and
  RReleaseImage(). RDestroyImage() is an alias to RReleaseImage() now, but
  will be removed in a future release because it no longer fits with the
  semantics. Will be kept for a while to allow a smoother transition.
  More about in wrlib/NEWS


For WINGs:
----------

- Small API change:
  1. Renamed WMSetApplicationIconImage(), WMGetApplicationIconImage() and
     WMSetWindowMiniwindowImage() to respectively WMSetApplicationIconPixmap(),
     WMGetApplicationIconPixmap() and WMSetWindowMiniwindowPixmap()
     They operate on a WMPixmap which is practically an X Pixmap with no alpha
     channel information and the new name is more suggestive and also leaves
     room for the new functions added for operating on images with alpha info.
  2. Added WMSetApplicationIconImage() and WMGetApplicationIconImage() which
     operate on an RImage and store alpha information too.
  3. Added WMGetApplicationIconBlendedPixmap() which will take the image with
     alpha set by WMSetApplicationIconImage() and will blend it with a color.
     If color is NULL it will blend using the default panel color (#aeaaae)
  All these changes will allow WINGs to handle images with alpha blending
  correctly in panels and wherever else needed. More about in WINGs/NEWS.
- updated panels to use the newly available RImages if present and fallback
  to old WMPixmaps if not, to properly show alpha blended images.
- replaced some still left malloc's with wmalloc's.


For Window Maker:
-----------------
- Fixed wrong mapping position of the "Docked Applications Panel" for some
  icons.
- Smoother animation for the smiley =)
- Made images with alpha blending be shown correctly in the panels and the
  icon chooser.
- The icon image set to be shown in panels ("Logo.WMPanel") will be
  automatically updated if its entry in WMWindowAttributes changes (without
  a need to restart as until now).


*** Note!!! ***

If you are developing applications with one of libwraster or libWINGs
then you should look to wrlib/NEWS and WINGs/NEWS to see what changed
and how should you update your code.
2001-04-21 07:12:21 +00:00
dan
eb11184ef0 Made the menus be mapped on the center of the screen when invoked with the
keyboard shortcuts.
2001-04-20 01:22:41 +00:00
dan
656a1c17e4 Forgot to add misc.c to the cvs tree 2001-04-19 21:12:08 +00:00
dan
b061bf9832 Put back int instead of socklen_t, because in libc5 socklen_t is not
defined making the compilation process to fail.
2001-04-19 21:09:52 +00:00
dan
ee49804d93 Setup a new cvs commit notification script that does log accumulation
and sends only one email message per cvs log message.

The email address where to send notification is no longer set in this
file (.cvsnotify), but this file can still be used to set extra email
addresses (one per line) where email should be also sent on cvs commit.
2001-04-19 20:38:56 +00:00
dan
6a1c354d3f testing new cvs notify script that does log accumulation 2001-04-19 20:27:02 +00:00
dan
1ca5543ecb testing new cvs notify script that does log accumulation 2001-04-19 20:15:51 +00:00
dan
79def3b196 new cvs notify script that does log accumulation 2001-04-19 20:10:01 +00:00
dan
1e5ca9ae9f testing new cvs notify script that does log accumulation 2001-04-19 20:08:25 +00:00
dan
c03f50530d testing new cvs notify script that does log accumulation 2001-04-19 20:06:06 +00:00
dan
010ce93e92 testing new cvs notify script that does log accumulation 2001-04-19 20:04:44 +00:00
dan
6df4a38a50 testing new cvs notify script that does log accumulation 2001-04-19 19:59:22 +00:00
dan
fd4937cd97 test for a new mail notification script 2001-04-19 19:52:50 +00:00
dan
648d75c299 - put back wmksize(), wmkrange() and wmkpoint() as functions instead of macros
- fixed some compilation warnings with -Wall
- some code cleanup
2001-04-19 01:04:48 +00:00
id
03824d5324 allow to scroll the virtual desktop further than the desktop geometry. 2001-04-18 22:12:20 +00:00
id
829e9d30fe add an option to virtual desktop 2001-04-18 22:08:34 +00:00
dan
4341224f6e Fixed label in crash panel to wrap. 2001-04-18 14:44:57 +00:00
dan
c3d2a890d7 - Fixed crashing bug when name and class were empty for a docked app.
- Removed MIN() and MAX() macros and replaced them with WMIN() and WMAX() from
  WINGs.
- Added a hint that Window Maker crashed, to allow windows to be placed
  in their correct previous positions after a crash situation and also to
  preserve their state before the crash (minimized, shaded, hidden, ...)
2001-04-18 00:25:58 +00:00
dan
10e7985961 - Made the Gnome tasklist skip the windows with the "Skip window list" flag
enabled. (patch from Bastien Nocera <hadess@hadess.net>)
- Small code cleanup in src/workspace.c
2001-04-17 01:02:21 +00:00
id
9d1306bf01 disable scrolling menu when it is in virtual desktop mode.
you have to click and drag to scroll the menu.
2001-04-16 13:33:50 +00:00
dan
5c37df521e Moved color panel testing to wtest.c and removed testcolorpanel.c 2001-04-16 00:37:34 +00:00
dan
79b17caa73 Added WMCreateBlendedPixmapFromRImage() 2001-04-16 00:10:58 +00:00
dan
3300f79501 Small update of clip colors for some style files. 2001-04-16 00:09:46 +00:00
dan
046403dbbb - added WMRemoveFromArrayMatching(array, match, cdata), which will remove the
first element in the array that is matched by match(item, cdata)==True.
- added WMArrayFirst(), WMArrayLast(), WMArrayNext() and WMArrayPrevious()
  functions and also WM_ITERATE_ARRAY() and WM_ETARETI_ARRAY() macros, to make
  interfaces to WMBag and WMArray similar and to make life a little simpler
  when iterating through all elements of an array.
- replaced bags with arrays wherever appropriate. This will improve
  performance a bit.
- replaced some recursive code with iterative code in WINGs/selection.c
- some code cleanup is src/
2001-04-15 01:22:56 +00:00
dan
a41b8993e5 Better organized the window inspector panel. 2001-04-12 00:00:06 +00:00
dan
09f4b0d409 Fixed the info panel to work well with icons different in size than the
default GNUstep.xpm
2001-04-11 21:04:31 +00:00
dan
81ccbdc743 - Fixed problem with GNOME apps that have windows which need to stay on the
desktop level.
- Fixed incorrect parsing of display and screen number from $DISPLAY.
2001-04-11 00:14:41 +00:00
dan
e0235bb61b - made "Keep on Top" in the dock/clip menu a checked menu entry. It's _much_
easier to work with it this way.
- better naming of options in the clip options menu.
- better detection of whether to use EXEC or SHEXEC in WPrefs menu editor.
2001-04-10 22:00:41 +00:00
dan
9035122c5f - Now when Window Maker calls wmsetbg to set the background, it will pass the
correct switch to it, depending on the value of the DisableDithering option.
- Replaced some functions with macros in WINGs (wmkpoint(), wmksize() and
  wmkrange()). They're less expensive to call this way.
- Fixed a memleak in the info panel.
2001-04-09 23:43:09 +00:00
id
6bbe6f2b9d fix virtual desk a bit. 2001-04-05 07:43:13 +00:00
dan
7e8bff904f Fixed secure textfields not to allow text selection, to avoid
compromising sensitive information by pasting it to a terminal.
2001-03-23 02:26:15 +00:00
dan
1a3fd2f795 - better and more robust handling of events (timer, idle, input, X) in
WMMaskEvent()
- fixed a bug where input and timer events were not treated for undefined
  periods of time under some circumstances.
2001-03-22 00:56:09 +00:00
dan
80fb289fc9 testing the notification thing 2001-03-21 05:02:17 +00:00
dan
5045cdbe60 updated Changelog about the recent move from WINGs.h to WUtil.h for handler definitions 2001-03-21 04:40:34 +00:00
dan
726ba653cf - Moved the timer, idle and input handler definitions from WINGs.h to
WUtil.h among with their callbacks and prototypes, because they're not
  GUI related
2001-03-21 04:34:24 +00:00
dan
1cdc0e4c06 added cvs notification by email on commits 2001-03-21 03:45:15 +00:00
dan
8564f5e409 testing cvs notification stuff 2001-03-21 03:41:06 +00:00
dan
a719eb98f1 added cvs notify file, with email addresses where to send email on commits 2001-03-21 03:39:27 +00:00
dan
a8da38c431 testing cvs notification 2001-03-21 03:38:01 +00:00
dan
bc3b44acaa - simpler and more straightforward event handling for timer, idle, input
and X events (also fixed some problems the old handling logic had)
2001-03-21 01:29:22 +00:00
dan
f5dcab0663 - moved WINGs's internal handlers (timer, idle and input) to handlers.c
to avoid code duplication.
- simplified wevent.c and wutil.c
- renamed WMAddEternalTimerHandler() to WMAddPersistentTimerHandler()
2001-03-20 23:46:57 +00:00
kojima
dd9fd9f12a added japanese menu 2001-03-15 22:33:22 +00:00
kojima
f91e2693f9 fixed mem leak 2001-03-15 21:13:54 +00:00
kojima
7f8d51555b fixed timerhandler cpu eater 2001-03-14 04:19:06 +00:00
kojima
c1840e943d *** empty log message *** 2001-03-14 03:58:55 +00:00
kojima
3b7b2ef6b7 *** empty log message *** 2001-03-14 03:18:16 +00:00
kojima
eab5ea31ea paranoid signal stuff 2001-03-14 03:00:34 +00:00
kojima
51b1bf34b9 fixed some signal handling bugs 2001-03-14 02:54:54 +00:00
dan
b85df20ba2 applied small fix patch from Marcelo E. Magallon <marcelo.magallon@bigfoot.com> 2001-03-12 01:56:26 +00:00
kojima
ab641e7320 removed MOUSE_WS_bla
added back easter egg
2001-03-11 18:33:19 +00:00
kojima
e3decb34cb removed useless files 2001-03-11 18:25:47 +00:00
nwanua
f8e94406df restoring copy of wtext.c to cvs (wif ssh) 2001-03-10 04:58:18 +00:00
dan
77e1b7038b testing new loginfo script 2001-03-09 02:48:32 +00:00
dan
6dafb928fe testing new loginfo script 2001-03-09 02:47:16 +00:00
dan
34c2bb0f0e testing new loginfo script 2001-03-09 02:41:29 +00:00
dan
a00fb1b2cf test for loginfo 2001-03-09 00:47:58 +00:00
dan
607bbb7e3a Fixed splitviews regarding index access (first element was never accesible) 2001-03-08 00:49:21 +00:00
dan
012d995ab1 Fixed uninitialized pointer in wtext.c 2001-02-28 05:40:45 +00:00
dan
99defe80a5 added WMGetLabelFont() 2001-02-26 14:53:30 +00:00
dan
1a1775bae0 - Made scrolling of text in dialog panel smoother
- Added WMGetPanelFont()
2001-02-26 14:51:17 +00:00
dan
c720860ed3 Fixed crashes in 24 and 32bpp after introduction of hermeslib support 2001-02-26 00:43:44 +00:00
kojima
64defd4d22 fixed scroller bug when displaying scroller before
setting initial values
2001-02-25 20:47:04 +00:00
dan
054d7cc006 wrong pointers, but code was not used so problem didn't show up anyway 2001-02-25 03:13:32 +00:00
kojima
c7f5318a41 er.. fixed some typo 2001-02-24 00:35:15 +00:00
dan
fc38d1ca16 fixed a typo 2001-02-23 01:49:06 +00:00
nwanua
9451aae632 now when a button click "links" to another page, instead of it
being destroyed right away, a timer handler queues it for 10 seconds
later (hopefully enough time for the buttons callback to have returned).
... 10 seconds may not be enough for ALL widget callbacks...
2001-02-22 07:48:28 +00:00
nwanua
ae9e955f10 added a #define for WMClearText 2001-02-22 07:32:36 +00:00
dan
f6a889910a removed no longer needed done members in panel structures. 2001-02-22 04:13:35 +00:00
dan
ae52b2a437 Fixed incorrect color retrieval 2001-02-21 04:39:04 +00:00
dan
d5ebb27e2d spelling typo fixed 2001-02-21 03:59:29 +00:00
kojima
10972f2666 adapted for SetViewExpands... 2001-02-20 23:39:06 +00:00
kojima
affcc3babd various fixes, scrollview scrollers, text painting 2001-02-20 23:38:36 +00:00
dan
4521852297 Added call to Hermes_Init() 2001-02-20 09:31:57 +00:00
kojima
58ed9abf8d new wsetfont stuff 2001-02-20 01:28:11 +00:00
nwanua
6684492033 more cursor motion and text entry fixes, esp. for graphic blocks...
also added stipple overlay for selected graphics
2001-02-19 07:22:38 +00:00
kojima
26799953c9 missing header 2001-02-18 01:01:36 +00:00
kojima
36ebcf1949 fixed wrlib version # 2001-02-18 00:46:05 +00:00
kojima
8d988e5eae Hermes support 2001-02-18 00:41:22 +00:00
kojima
e926227b3e ble 2001-02-17 22:57:04 +00:00
kojima
315136991d bla 2001-02-17 22:55:50 +00:00
kojima
57bc9c54f3 kbd shortcuts for icon dialog 2001-02-17 22:46:29 +00:00
kojima
b04c4ea500 added WINDOWS_MENU to rootmenu 2001-02-17 21:44:22 +00:00
kojima
50e85f57f2 fixed vertical scrolling bug 2001-02-16 01:34:21 +00:00
dan
d9249dd99a Removed all references to REDUCE_APPICON 2001-02-14 04:12:06 +00:00
kojima
870252297a *** empty log message *** 2001-02-14 03:23:46 +00:00
kojima
07c9bb7d8d programmatic scroller changes send notifications
fixed bug with tableview resize
made tableview column resizing
2001-02-13 23:00:14 +00:00
kojima
2172a4478e temporary removal of font changer until it's fixed 2001-02-12 19:36:00 +00:00
dan
8f0d2f9e4b Added estonian locale from Ivar Smolin <okul@trenet.ee> 2001-02-12 13:59:59 +00:00
nwanua
bc7d29d46e fixed arrow navigation quirks and color mem leaks 2001-02-12 06:09:08 +00:00
kojima
d06532cb3e added collapsing option 2001-02-11 04:29:30 +00:00
kojima
61933ceaa4 added stack cycling 2001-02-11 03:13:45 +00:00
kojima
7a491db6c1 new appicon grouping stuff 2001-02-11 02:18:26 +00:00
dan
0fae7d3e77 . 2001-02-11 01:07:10 +00:00
kojima
0667b39554 hadess gnome fix 2001-02-11 00:10:30 +00:00
kojima
de7f00d474 fixed some stuffs 2001-02-10 22:27:50 +00:00
richard
14f2db1eb2 bracket enum declarations with preprocessor defines to avoid
redefinition of the same enums.
2001-02-10 18:13:32 +00:00
nwanua
e4ce88e7f1 fixed reqBlockSize... sometimes X%Y was zero... very bad 2001-02-09 17:06:15 +00:00
nwanua
21ab029532 tiny updates 2001-02-09 17:01:51 +00:00
kojima
543a46659b aded new stuffs 2001-02-09 16:05:49 +00:00
kojima
05f2a74ef5 fixed modifier bug in textfield again 2001-02-09 16:03:09 +00:00
richard
4d8e691608 Make window stacking level changes to match GNUstep. 2001-02-09 15:56:52 +00:00
dan
40386e1d40 . 2001-02-09 03:20:54 +00:00
dan
a1fb870fe8 - Added example of using WMCOnnection for a server like program.
- Added README with a short description of what each example does.
2001-02-09 03:12:16 +00:00
kojima
9d88b14f59 tomka's i18n fixes 2001-02-08 22:43:00 +00:00
kojima
f91f2eb173 changed top widget of panels from frame to box 2001-02-08 21:54:12 +00:00
dan
15b720046b fixed a label to wrap. 2001-02-04 03:47:25 +00:00
dan
0502a80dc7 new wsetfont script updated for bulgarian from
Anton Zinoviev <zinoviev@debian.org>
2001-02-04 03:27:45 +00:00
dan
17ae285f37 Fixed a bug causing sigsegv for a WMList with more than 32767 items 2001-01-30 21:04:52 +00:00
dan
4637c09d19 - Added Jim Knoble's 'no polling' patch. 2001-01-30 03:04:02 +00:00
dan
8b7930f6c9 Removed carriage returns added by error to this file. 2001-01-26 23:27:10 +00:00
kojima
25b82b5b8c slovak stuff 2001-01-26 19:31:11 +00:00
kojima
2cf8c125a5 misc. fixes 2001-01-26 19:30:53 +00:00
dan
ff5afa20f2 . 2001-01-25 01:58:59 +00:00
dan
617525a573 New wkdemenu.pl from Malcolm Cowe 2001-01-25 00:22:07 +00:00
dan
c4f147ef01 . 2001-01-25 00:00:58 +00:00
dan
14e5cc8357 Renamed se.po to sv.po 2001-01-24 23:56:38 +00:00
dan
b21ad7ad2d Fixed non-responding panels in wmaker. 2001-01-23 03:51:46 +00:00
dan
8493be9734 Added a missing function declaration 2001-01-23 02:52:14 +00:00
kojima
070645e329 *** empty log message *** 2001-01-21 15:43:07 +00:00
richard
0bbbdcb92f Remove code disabling focus handling for GNUstep apps 2001-01-21 10:44:13 +00:00
dan
714db5cb3a Updated header file for latest changes in the function prototypes 2001-01-21 03:00:00 +00:00
kojima
e0fbdaa15e changed stuff in WMSetBoxExpandsToParent 2001-01-21 00:19:02 +00:00
dan
f9778df784 Fixed a mem leak in WMList 2001-01-19 01:45:29 +00:00
dan
a20aebdef2 - Made all changes for moving WINGs headers in the WINGs subdirectory.
- Updated get-{wings|wutil}-flags accordingly
2001-01-18 19:21:56 +00:00
dan
6a3b06e609 Finished the generic tree node data type 2001-01-18 16:59:15 +00:00
kojima
bb886be82e added responder chain alike stuff for relaying kbd events from widget to widget 2001-01-18 02:00:56 +00:00
dan
1b587b01ee Applied patch from Largo to update sound related stuff and documentation 2001-01-18 01:33:44 +00:00
kojima
b4851afbb7 *** empty log message *** 2001-01-16 16:08:40 +00:00
dan
fea4c4c84e Reverted the gnustep commented code. it seems better with the patch, but still buggy 2001-01-12 13:24:21 +00:00
kojima
5c62197542 fixed autoexpand to parent 2001-01-11 16:31:23 +00:00
dan
017f3e5e4f fixed an truncated word in a label (not enough width) 2001-01-11 03:02:31 +00:00
dan
7d88519c75 updates to the tree code 2001-01-11 02:59:32 +00:00
dan
a7ec9dab95 - Preliminary tree code
- added a key enumerator to hashtables (similar to value enumerator,
  just that it enumerates all keys in the hash)
2001-01-11 02:35:21 +00:00
dan
9a43af3d83 Fixed wrong size of the alert panel buttons 2001-01-11 01:41:14 +00:00
kojima
b6f543df77 fixed various bugs 2001-01-10 21:10:39 +00:00
dan
61675a7e19 Fixed a couple of crashing bugs generated by dereferencing of 0x0
pointers (added by the new modal loop code)
2001-01-10 04:54:22 +00:00
dan
1b41d56ad0 - updated code to use the new runmodal loop where necessary.
- made the WMRunModalLoop() reentrant (a modal panel can have its own
  modal panel and so on) by saving the modal related information when
  entering the modal loop and restoring it after.
2001-01-10 04:24:11 +00:00
dan
bc25a31733 Fix?? for the gnustep focus problem 2001-01-10 03:05:39 +00:00
kojima
22eb14c9d5 changed panel to use boxes 2001-01-09 16:45:14 +00:00
kojima
35c5908565 fixed bug in wmaker.inst 2001-01-09 15:51:20 +00:00
kojima
8ed773a437 fixed stupid bug in get-wings-flags 2001-01-07 03:53:56 +00:00
id
efb4aa5b74 remove stuffs 2001-01-07 02:59:11 +00:00
id
85e601eabc heh 2001-01-07 02:30:35 +00:00
id
2b9ffb0bdb add plugins dir to Makefile.am 2001-01-07 02:05:45 +00:00
kojima
2a67a96d86 updated timestamps.. 2001-01-07 01:34:07 +00:00
kojima
7ab70f692f fixed typo bug in WPrefs/WindozeCycling
commented out unfinished background stuff in WPrefs
added updated potfiles
fixed circulate raise
2001-01-06 23:52:00 +00:00
kojima
c6199adc29 updated galician translation 2001-01-06 22:48:11 +00:00
kojima
e314838447 fixed bug in builtin xpm loader
fixed crash bug in menu editor
2001-01-06 22:38:07 +00:00
id
bb7314ddac remove plugin 2001-01-06 18:59:12 +00:00
id
ddf5fe3abe remove plugins 2001-01-06 18:58:29 +00:00
id
8fb5a4c7fe remove drawstring plugins 2001-01-06 18:54:15 +00:00
id
142db0ae2a remove drawstring plugin 2001-01-06 18:42:42 +00:00
id
2954c53d67 add plugins in SUBDIR 2001-01-06 18:41:41 +00:00
kojima
5475530205 added updated pot files for pt/es from conectiva 2001-01-06 17:50:06 +00:00
kojima
a7d22c48b4 added item copying to menu editor in wprefs 2001-01-06 17:43:18 +00:00
kojima
c6c0954767 *** empty log message *** 2001-01-06 17:20:46 +00:00
kojima
8f1781cd4e renamed tabledelegates files 2001-01-06 17:20:04 +00:00
kojima
0b9cfd7c8e applied hadess patch for gnome panel 2001-01-06 17:05:50 +00:00
kojima
1ac8c2a6ce fixed missed sgi cc compat bug 2001-01-06 16:42:16 +00:00
kojima
3874f848c1 fixed compilation probs with SGI cc 2001-01-06 01:52:27 +00:00
kojima
d9540f37bf fixed bugs in configure.in, removed 2001-01-05 23:32:10 +00:00
kojima
f8c8382b1e put back mmx stuff 2001-01-05 22:57:12 +00:00
kojima
068c5a94b1 fixed some bugs
made click on windows that are unfocused windows focus them on sloppy/evil focus mode
2001-01-05 22:39:01 +00:00
kojima
83979b5f4c *** empty log message *** 2001-01-05 21:29:26 +00:00
kojima
b08e5b1006 new style 2001-01-05 21:28:58 +00:00
kojima
f1e5fdcf69 removed some unused compiletime option 2001-01-04 23:09:45 +00:00
kojima
0d7b4d633b some option summary text fixes 2001-01-04 23:08:40 +00:00
kojima
e99511b08c various table widget updates
and fixed in misc other ones
2001-01-02 14:17:26 +00:00
dan
e3577222a7 libwmfun is no longer a tar ball so make dist failed because of this. 2001-01-01 08:50:41 +00:00
dan
abc1ef4ed9 Latest changes 2001-01-01 08:42:25 +00:00
dan
9093cde817 Fixed the no-go-away problem with closing shaded windows. This also
fixes a memory leak (the window didn't go away because its destroy
function was not actually called. Also non-shaded windows were
unmapped, but not destroyed either, so they just apparently went away).
2001-01-01 08:39:26 +00:00
dan
a8ab51747d Added the new images to the Makefile.am too. 2000-12-31 01:33:10 +00:00
kojima
1876b4683a moved test stuff to proper location 2000-12-30 17:13:48 +00:00
id
e78741ee4c add more icons. 2000-12-30 10:06:36 +00:00
dan
c8da381337 . 2000-12-28 00:30:28 +00:00
dan
f81d0f30de Fixed a bug in scroller code related to mouse wheels 2000-12-28 00:30:09 +00:00
id
45869c37e0 fix xthing data 2000-12-25 01:25:02 +00:00
id
ad4fd02247 fix xthing 2000-12-25 01:24:43 +00:00
kojima
4c60cd5ba4 changed stringselector for enumeration selector 2000-12-21 21:06:00 +00:00
kojima
f912d9f38d tableview field editor delegates 2000-12-21 04:46:20 +00:00
kojima
5e1e94efd6 *** empty log message *** 2000-12-21 03:38:12 +00:00
id
37f811de3e ok 2000-12-17 16:23:43 +00:00
id
210ff264b9 I was trying to optimize this w/o using this, hope the change is right. 2000-12-17 14:43:08 +00:00
id
163e70bdae fix from Pascal and Alban 2000-12-17 13:56:14 +00:00
id
e541b9433b fix 2000-12-17 10:57:41 +00:00
id
bc494d2c7b fix problem on solid 2000-12-17 04:43:42 +00:00
id
ecefdc6171 fix tiny thing 2000-12-17 04:26:53 +00:00
dan
c11653f438 small fixes. 2000-12-17 03:34:15 +00:00
nwanua
327d58346f WINGs.h: missing void WMSetBrowserHasScroller(WMBrowser *bPtr, int hasScroller) 2000-12-12 23:08:52 +00:00
id
14f471815d fix 2000-12-12 07:28:20 +00:00
id
8ca4a67a24 changes related to plugin system & drawstring 2000-12-11 03:10:26 +00:00
id
2d063d279e fix fix 2000-12-09 12:16:35 +00:00
id
57d9e81c2d fix solid color for framewin with plugin 2000-12-09 08:34:07 +00:00
id
0e34a7ae28 fix solid color when using plugin. 2000-12-09 01:23:18 +00:00
id
6ff939eb6e fix 2000-12-09 01:21:52 +00:00
id
2574e2e56a fix another drawstring bug, looks like final one, indeed :) 2000-12-07 01:40:54 +00:00
dan
f47f148f10 . 2000-12-07 00:15:58 +00:00
dan
4e4f6f44e1 more administrative stuff 2000-12-07 00:15:00 +00:00
dan
e186e99789 misc management stuff 2000-12-07 00:12:57 +00:00
dan
d8d9cc4b0f These files shouldn't live in the cvs tree 2000-12-07 00:10:05 +00:00
dan
518fcb7cb9 Set library version in Makefile.am 2000-12-07 00:04:37 +00:00
id
aa280f3925 fix drawstring plugin support 2000-12-06 22:49:11 +00:00
id
756ab2c019 pass texture to plugin so it doesn't have to grab from title bar.
add experiment plugin support to menu entry, performance need to
be improved. I'm thinking of making a compressed expose event geometry.
2000-12-06 16:34:58 +00:00
id
83824dbcc3 RCombineArea* will detect the intersec geometry. 2000-12-06 03:07:51 +00:00
id
5d0157cf7b pass pixmap to the plugin. 2000-12-05 00:53:11 +00:00
id
762d37f1fb fix 2000-12-05 00:51:23 +00:00
id
eac0eff3ba wrong assert? 2000-12-05 00:43:22 +00:00
id
3a52326385 fix a big 2000-12-04 07:36:57 +00:00
id
3fdb6a6f27 fix 2000-12-04 03:14:52 +00:00
id
edcfd4a321 fix bugs 2000-12-04 02:24:54 +00:00
id
5e5730389f initiate 2000-12-03 22:27:42 +00:00
id
fa5af19285 initiate 2000-12-03 22:18:20 +00:00
id
d361ee2cc0 remove libwmfun package. 2000-12-03 20:05:28 +00:00
id
7aadc1ef00 initiate plugins branch 2000-12-03 18:58:41 +00:00
id
932cfc1bd4 drawstring plugin and a small change in vdesk 2000-12-03 14:04:08 +00:00
id
9b2ca26ce8 using unsigned for height and width cause a lot of confusion. I grab
X's header and see that XImage use int for its width and height so
I change RImage to follow that.
2000-12-03 13:37:30 +00:00
id
de969c0b5e extendable drawstring function, hopefully last change to the function. 2000-11-30 15:37:27 +00:00
id
1752587a4a Make draw string plugin more extendable in future. 2000-11-30 15:32:19 +00:00
id
867ed95485 destroy func must has the arguments to consider the right destroy sub-func. 2000-11-30 01:53:43 +00:00
id
331e85fd85 destroyDrawString 2000-11-30 00:26:59 +00:00
dan
211ccf79f4 . 2000-11-29 05:23:46 +00:00
dan
bb6182f4f7 Fixed the buryChild thingie about the zombies problem. 2000-11-29 05:15:59 +00:00
id
1a754844bb gnome panel patch code and pass full text to the plugin 2000-11-28 01:20:52 +00:00
id
4ec9827c4e oops again 2000-11-25 21:22:12 +00:00
id
1f22c07051 Add delay to send configure notify in virtual edge and
fix a bug in move window with keyboard.
2000-11-25 21:06:31 +00:00
dan
4eb26a0bd3 Some changes that try to address the zombie proccesses some people seem
to have.
2000-11-25 04:13:39 +00:00
dan
ad95610321 - removed calls to wsyserror() and wwarning() inside the WMHost and
WMConnection code. do call by yourself wsyserrorwithcode() passing
  WCErrorCode, whenever a call don't return the expected value, and
  WCErrorCode > 0. If WCErrorCode==0 that is not an system error,
  condition, so don't call wsyserrorwithcode() in that case.
- added some assertions where appropriate
2000-11-24 10:31:10 +00:00
id
a9b75e03e2 cleaning 2000-11-23 10:15:21 +00:00
dan
80d5d196c1 Added check for strcasecmp 2000-11-23 02:13:00 +00:00
id
9d44d6c177 I changed unsigned int to just int for window width because it
confused some comparitions and while other widths use int.. hope
that won't cause bugs.
2000-11-22 07:36:48 +00:00
dan
527bbcf271 - some small fixes to make it compile on werider systems. 2000-11-22 07:34:03 +00:00
nwanua
9a4037ebf1 misc. oversight fixes 2000-11-22 04:48:40 +00:00
id
6aafaaa63c auto shrink & expand vdesk 2000-11-21 19:30:16 +00:00
id
8055698df0 forget something in v edge 2000-11-20 01:57:17 +00:00
dan
9d98d884ae - Added WMSetConnectionCloseOnExec() to specify if the socket of a
connection survives or not an exec* family call. By default all
  connections created by WINGs, set the socket to be closed on an exec*
  call. Use the function if you need the reverse.
2000-11-19 23:50:38 +00:00
dan
972620c7cd - replaced WMBag with WMArray in connection.c and host.c
- added WMGetConnectionUnsentData() (WMGetConnectionQueuedData() is an
  alias too)
2000-11-19 20:08:14 +00:00
id
b0506c3737 Changes relate to virtual edge. 2000-11-19 10:33:41 +00:00
dan
9bd00e5cd2 - Added readme about handling ConnectionDidDie or ConnectionDidTimeout
notifications.
2000-11-19 00:16:37 +00:00
id
816ce22875 Changes relate to virtual edge. 2000-11-17 02:10:32 +00:00
dan
899226207d - Fixed a flickering problem with the scrollview.
- Use of uppercase letters when getting keysyms
2000-11-16 18:07:12 +00:00
nwanua
2d20abd00e WMReplaceTextSelection is now implemented 2000-11-16 01:43:32 +00:00
kojima
e4dbd1fe0d fixed tab view clicking 2000-11-13 13:22:22 +00:00
kojima
d7f924c5e7 added new style 2000-11-12 15:06:27 +00:00
dan
2c5809c383 . 2000-11-12 04:40:09 +00:00
dan
fad7c5d3ec missing function declaration 2000-11-12 04:34:03 +00:00
kojima
b74fad4bd6 fixed msg texts 2000-11-12 04:03:30 +00:00
kojima
dc67e81437 added table widget 2000-11-12 03:29:53 +00:00
kojima
29ceeb870d *** empty log message *** 2000-11-12 03:28:56 +00:00
kojima
52308a0abc fixed bugs of resized widgets 2000-11-11 18:08:10 +00:00
id
4d41658e1a fix a typo. 2000-11-11 17:58:16 +00:00
nwanua
bb9a2e7445 FindInTextStream completed for forward, backward, case (in)sensitive searches 2000-11-11 01:03:56 +00:00
dan
cd57646835 Put back check for root menu. 2000-11-10 18:20:34 +00:00
nwanua
7d463ca48d added support for Getting and Setting Selection Fonts/Colors/Underline... 2000-11-10 07:24:49 +00:00
dan
b0dbbb3536 - fixed uncompilable tree.
- wrong parameter passed in some tabview function.
2000-11-09 21:22:47 +00:00
kojima
336e2c3678 added ScreenSwitchKey 2000-11-09 17:43:03 +00:00
kojima
d9d5a52200 added shortcut to switch screens 2000-11-09 17:42:20 +00:00
kojima
1863d60e3a added WMAddTabViewItemWithVie() 2000-11-09 14:07:48 +00:00
kojima
6bb9c58de1 removed default autowrap from button and label 2000-11-09 13:19:42 +00:00
kojima
47e4e31ba0 *** empty log message *** 2000-11-09 05:02:37 +00:00
kojima
19160e8dfd added box widget 2000-11-09 05:01:58 +00:00
dan
366bf50d3c forgot to update the changelog about wmessage() 2000-11-06 23:15:21 +00:00
dan
debd7ef5e8 Added wmessage() for printing a variable formatted message to stderr
with the program name prepended to it.
2000-11-06 23:13:14 +00:00
dan
77670119a1 Optimized some of the previous changes related to order of evaluation. 2000-11-06 14:36:22 +00:00
dan
e7ce6468fc - fixed code in wrlib dependant on the order of evaluation.
code like
    *ptr++ = *ptr++ = *ptr++ = color;
  is wrong, because there is no guarantee that ptr will be incremented
  _between_ the assignment operations. it can be incremented after all
  assignment operations as well. Because of this both of these are valid
  implementations for a compiler:
    a. assign, increment, assign, increment, assign, increment
    b. assign, assign, assign, increment by 3
  In case b. only the first memory location of the 3 will be modified, being
  assigned 3 times the same value, while the other 2 remain unchanged.
  For example egcs-2.91.66 (and possibly gcc-2.95.x too) implement this in
  the second way (like in case b.)
  Also the order in which the assignement is made is undefined (left to right
  or right to left).

this fixed the problem we had with greyscale jpegs showing up in red,
and possibly other problems related to pseudocolor and greyscale displays.
2000-11-06 04:21:25 +00:00
dan
f7b4e85525 - added the wraster lib dependancies at link time, so they will be
written in the libwraster.la file allowing automatic linking against
  all the libs libwraster depends upon without specifing them again when
  linking programs that use libwraster. -lwraster will be enough.
2000-11-06 03:24:30 +00:00
nwanua
d2decce5e7 Fixed those // comments 2000-11-04 04:06:35 +00:00
dan
a1dc24bab1 Another // comment 2000-11-04 03:53:19 +00:00
nwanua
d00e72bc45 - Changed ConvertFont et al. to WMEmphasizeFont, and added WMNormalizeFont() 2000-11-04 03:47:39 +00:00
nwanua
731656cbed nwanua tests logging 2000-11-04 03:27:26 +00:00
dan
857b56c502 Fixed some // style comments 2000-11-04 03:24:34 +00:00
nwanua
902e985a53 - Test of log 2000-11-04 03:16:25 +00:00
nwanua
fae5a42f65 - Made changes to reflect API changes in wtext.c 2000-11-04 03:10:49 +00:00
nwanua
3ad4bf5ad8 *** empty log message *** 2000-11-04 02:45:23 +00:00
nwanua
54a46fa513 *** empty log message *** 2000-11-04 00:58:42 +00:00
nwanua
decf2571a8 *** empty log message *** 2000-11-03 07:44:59 +00:00
nwanua
5f746a3efa *** empty log message *** 2000-11-03 02:33:29 +00:00
dan
a81a0685ef - added a new version of wstrappend() with different behavior from the
old one (the one renamed to wstrconcat). The new wstrappend(dst, src)
  will modify and return dst, without creating a new string to hold the
  result, except if dst==NULL, in which case its equivalent to calling
  wstrdup(src)
2000-11-02 02:51:53 +00:00
dan
2bd2b72af9 - renamed wstrappend() to wstrconcat().
be sure to replace wstrappend() with wstrconcat() anywhere in your code
because a new wstrappend() function will be implemented that will have
different semantics and if your code will use the new one instead of
the old will break.
2000-11-01 15:40:15 +00:00
nwanua
1a8c578a1c *** empty log message *** 2000-11-01 03:41:49 +00:00
dan
d40425c388 Fixed mem leak in browser code. 2000-11-01 03:40:36 +00:00
nwanua
84ba62ba6b *** empty log message *** 2000-11-01 02:54:50 +00:00
nwanua
a20c49b80f *** empty log message *** 2000-11-01 00:51:37 +00:00
dan
497e34b6b8 - Replaced all free() with wfree() where appropriate
- Fixed some memory leaks
2000-10-31 14:57:22 +00:00
dan
581ab58f70 . 2000-10-28 01:45:29 +00:00
nwanua
9903bf9ca8 *** empty log message *** 2000-10-27 00:10:55 +00:00
dan
af5e3da105 Fixed scrolling directions for mice wheels. 2000-10-26 23:52:07 +00:00
nwanua
b1baf21532 *** empty log message *** 2000-10-26 23:08:18 +00:00
dan
99ce8b2d85 Fixed wtrimspace() whih had wrong behavior. 2000-10-25 22:41:03 +00:00
nwanua
e215328d81 lotsa new features 2000-10-16 15:38:41 +00:00
dan
172da48a60 Gah!. New incompatible change in wtext.c broke the compilation of code
using WMText widget
2000-10-15 00:11:41 +00:00
nwanua
9b0e0c6c54 lot's a cleavage... 2000-10-14 01:45:16 +00:00
dan
2bc40c47eb Fixed compilation problem 2000-10-12 19:21:30 +00:00
kojima
275a2a3782 added scrolled notifcation to scroller
added GetVisibleRect function to scrollview
2000-10-11 16:21:50 +00:00
dan
bdaacb6daa Fixed bug with WPrefs not selecting the menu appearance options after startup 2000-10-08 23:29:11 +00:00
dan
88ed406e08 . 2000-10-03 22:29:25 +00:00
dan
6fd8101b73 small update 2000-10-03 22:22:40 +00:00
dan
bba6dd1670 - WMDestroyWidget() now first calls WMUnmapWidget()
- decided behavior of list selection while scrolling
2000-10-03 22:20:00 +00:00
dan
ed39c92de0 Code to allow multiple selection in WMBrowser 2000-10-03 20:52:15 +00:00
dan
b24b51b514 Small fix 2000-10-03 12:44:05 +00:00
dan
eeda795db1 Added select while scrolling the list, when the mouse pointer leaves
the list area, at either top or bottom having the mouse button pressed.
2000-10-03 12:38:23 +00:00
dan
c7a0cd924e Added a function alias WMDuplicateArray() -> WMCreateArrayWithArray() 2000-10-02 12:37:55 +00:00
dan
399439d338 Better behavior for the multiple selection in lists. 2000-10-02 11:43:28 +00:00
dan
7cf93ae49d *** empty log message *** 2000-10-02 07:01:27 +00:00
dan
de99155948 - Fixed some issues with WMBrowser and the file panel that were
introduced by the latest changes in the WMList code (multiple and empty
  selection).
- added WMSetBrowserAllowMultipleSelection(), WMSetBrowserAllowEmptySelection()
  WMBrowserAllowsMultipleSelection() and WMBrowserAllowsEmptySelection().
2000-10-02 06:59:18 +00:00
dan
b2478b634f - the list multiple selection code is working now. it still needs some
minor work and cleanup.
- made some bag and array functions to return void instead of int.
- a few new array functions.
- better handling of mouse wheel.

!!! make clean after this update before you rebuild. some enums changed.
2000-10-01 23:26:03 +00:00
nwanua
6de1c41865 FindTextInStream completed 2000-10-01 07:38:57 +00:00
dan
e4d59476c7 *** empty log message *** 2000-10-01 04:29:55 +00:00
nwanua
56ff625a5c *** empty log message *** 2000-10-01 04:29:28 +00:00
nwanua
dae28629bb *** empty log message *** 2000-10-01 03:49:00 +00:00
dan
8ae0b5cc1d fixed some buffer overflow bugs 2000-10-01 03:20:08 +00:00
dan
7350f7826d Fixed buffer overflow problems 2000-10-01 03:05:25 +00:00
dan
d892cd0ea1 Fixed a duplicate PLRelease() call. 2000-10-01 02:43:31 +00:00
nwanua
1d0a374bd4 i 2000-10-01 01:49:47 +00:00
dan
dde0b00fe5 *** empty log message *** 2000-09-30 03:54:46 +00:00
dan
4fd5e0cad1 Window placement fix 2000-09-30 03:47:49 +00:00
dan
cd6639ccc7 Fix for incorrect automatic palcement of windows if there were shaded
windows on the other workspaces.
2000-09-30 03:46:07 +00:00
dan
e3fa161340 small update to list selection code. 2000-09-29 08:19:20 +00:00
dan
12c26a1cc5 Fixed some paths after the WINGs directory reorganization 2000-09-29 07:48:43 +00:00
nwanua
94b17e2d15 *** empty log message *** 2000-09-29 07:39:56 +00:00
nwanua
81f5124cec *** empty log message *** 2000-09-29 04:50:56 +00:00
nwanua
770c3507ed removed testtext.c 2000-09-29 04:50:32 +00:00
dan
67642b7c20 Better behavior of mouse wheel actions (Control and SHift are now
accepted as modifiers to select how much it will actually scroll on
each mouse wheel event).
2000-09-29 02:30:55 +00:00
dan
358e3346c3 update changes 2000-09-29 02:20:35 +00:00
dan
aee58cbd36 WMList compiles now, single selection seems to be ok (as it used to be) but
multiple selection is not yet complete.
2000-09-29 02:12:40 +00:00
dan
539fb32795 Small fix for an enum 2000-09-28 22:32:36 +00:00
dan
60a01b0f58 - More code for multiple selection in WMList.
- Better handling of mouse wheels (Shift and Control modifiers are used to
  select how muct to scroll on mouse wheel movement).
2000-09-28 14:06:50 +00:00
dan
bb8065ebc9 ... 2000-09-28 12:08:46 +00:00
dan
44fd05f1c3 Fixed bug related to incorrect reading of ppm files. 2000-09-28 12:07:38 +00:00
dan
8382063736 Fixed some typos. 2000-09-28 03:11:36 +00:00
dan
6973f07f30 Remake of the WMList code to allow multiple selection. Not complete yet.
It will not even compile. I Will finish it later today.
2000-09-28 03:09:57 +00:00
dan
df357ae1de New patch against 0.62.1 2000-09-27 22:20:21 +00:00
kojima
3de3009cee added wtokennext() 2000-09-26 22:44:38 +00:00
dan
ce8b816c5d Sorting functions return void now instead of int. 2000-09-26 10:54:37 +00:00
dan
4193d2265d - Added WMSetWindowUserPosition()
- Replaced FlattenStringList() and TokenizeString() with wtokenjoin()
  respective wtokensplit() from WINGs
2000-09-26 00:35:33 +00:00
dan
7b3c10b07d Replaced malloc by wmalloc 2000-09-25 23:31:08 +00:00
kojima
edc57cf7a1 added some new functions 2000-09-25 19:21:45 +00:00
dan
8cbe55ade1 Removed duplicate function definition 2000-09-25 19:07:55 +00:00
kojima
4acd090c54 added hungarian translation 2000-09-25 18:41:13 +00:00
kojima
9c9f7e6c0c new hide/unhide functions 2000-09-25 18:40:56 +00:00
dan
53a65d5bf8 Use wfree instead of free. 2000-09-25 17:46:59 +00:00
kojima
82168fcc3b fixed bug fix for WM_COMMAND 2000-09-25 17:36:57 +00:00
kojima
065d86f9c5 update 2000-09-25 17:33:53 +00:00
dan
7f74ea8081 Small bugfix, and more updates to typedef'ed functions. 2000-09-25 02:00:55 +00:00
dan
23ac6cc088 Added some typedef'ed functions for readability. 2000-09-25 01:42:06 +00:00
dan
3b9b020c5c Fixed a pointer deallocation problem 2000-09-25 00:51:51 +00:00
dan
ccbb6e8e15 Fixed some bugs, and compilation warnings. 2000-09-24 02:31:58 +00:00
dan
41ff127444 - Fixed WMArray.
- Changed WMList to use WMArray instead of WMBag
- Fixed compilation problems in WPrefs.app
2000-09-23 03:49:58 +00:00
dan
18b7dcc2b0 Fixed a problem related to the order in which the header files are included. 2000-09-22 18:14:20 +00:00
kojima
6760c39881 menu commands that have a = in it, executed with SHEXEC 2000-09-21 14:22:59 +00:00
dan
7e3f885aa4 Removed broken testtext from compilation. nwanua plese fix it before enabling 2000-09-21 12:01:49 +00:00
dan
40e67dfce0 Removed some redundant code. 2000-09-21 01:25:47 +00:00
nwanua
ac4997e739 including parser in wtext.c 2000-09-20 04:26:31 +00:00
dan
a3cd52ba05 Compress expose events 2000-09-20 01:14:03 +00:00
dan
c1a77f233f Finished the WMArray class 2000-09-20 00:30:45 +00:00
dan
468f578345 WMArray class is almost ready. 2000-09-19 02:05:45 +00:00
dan
85702115f3 Some more functions for the array class 2000-09-17 21:52:24 +00:00
kojima
3be86a5778 fixed bug in RCOmbineAreaWithOpaq 2000-09-15 14:44:19 +00:00
dan
9f98db6791 Some more code to the WMArray class 2000-09-15 09:42:22 +00:00
dan
e01ef57d4b Removed some unused code from the treebag 2000-09-15 05:02:01 +00:00
dan
595d2b060b Removed array bag, and restructured the tree bag to be WMBag 2000-09-15 04:57:31 +00:00
dan
446e260186 Bulgarian po and menu files 2000-09-14 22:10:30 +00:00
dan
275aacc237 Updated .cvsignore files 2000-09-13 20:21:57 +00:00
dan
7832b2a4cf Rearranged the structure of the WINGs subdirectory.
Created Documentation, Examples and Tests subdirectories.

Run update-autoconf after this update.
2000-09-13 20:19:05 +00:00
nwanua
4ad4480c55 misc. changes 2000-09-13 14:45:50 +00:00
nwanua
01332a48c6 now using 0xFA + size to mark graphic in the bag. 2000-09-13 02:04:22 +00:00
nwanua
d412240200 all new stuff 2000-09-12 02:10:08 +00:00
nwanua
cc3bbcaf4c Text Selection 99% complete, replaceSelection added 2000-09-01 17:58:29 +00:00
kojima
f813ff12d4 updated supported platforms info 2000-08-22 13:42:12 +00:00
kojima
d157320dfb workaround for 8bpp problem with std colormap creation 2000-08-16 23:05:19 +00:00
kojima
8c35d57144 updated credits for icon 2000-07-30 14:12:07 +00:00
kojima
5652f7b7cd added romanian menus 2000-07-25 00:07:44 +00:00
dan
07a7632a96 *** empty log message *** 2000-07-21 18:08:27 +00:00
nwanua
c79c8aa74d commiting WINGs.h 2000-07-21 15:29:51 +00:00
nwanua
70f8f029b1 just adding testtext changes 2000-07-21 01:06:54 +00:00
nwanua
ab7c77b07d nice additions 2000-07-21 01:06:20 +00:00
nwanua
dbbddf95e2 removed compile warnings in wmtext :-) 2000-07-20 16:51:54 +00:00
nwanua
ec6dce9c42 WMSetTextSeelctionFont/Color 2000-07-17 00:12:29 +00:00
kojima
6ec980095a fixed some bugs in menu editor 2000-07-16 06:29:12 +00:00
kojima
1a7c397d57 "finished" new menu editor 2000-07-16 04:05:49 +00:00
dan
ca837d793f Replaced USPosition with PPosition because is a programmatically
requested position.
2000-07-16 02:35:49 +00:00
dan
c08d8df66e Fixed USPosition mapping problem. 2000-07-16 02:26:56 +00:00
kojima
ce7db48e25 fixed problem with motion event compression 2000-07-16 01:08:13 +00:00
nwanua
ee0fa6ec7d added testtext 2000-07-15 23:18:59 +00:00
nwanua
802493b7e6 just some new changes... 2000-07-15 23:08:33 +00:00
kojima
2f68b51290 *** empty log message *** 2000-07-15 22:53:53 +00:00
kojima
6f0d835bdb new menu editor code 2000-07-15 22:48:31 +00:00
kojima
9a89e6cc18 added string utils 2000-07-15 22:08:25 +00:00
kojima
dcd44b17b1 more updates to editable menu 2000-07-15 22:00:41 +00:00
kojima
2dd7218dfa WMRootMenu is now plmenu instead of a text menu 2000-07-15 08:14:12 +00:00
kojima
b3dee733bb default WMRootMenu is now a proplist menu instead of text 2000-07-15 08:12:33 +00:00
kojima
bb6acdad3c added close button to editable menu 2000-07-14 15:16:46 +00:00
kojima
6d5f1817d3 new menu editor updates 2000-07-14 05:48:35 +00:00
nwanua
12f03e5ac4 added fontmanager.c 2000-07-13 23:54:20 +00:00
nwanua
d3d0304107 changes to wmtext 2000-07-13 23:48:54 +00:00
nwanua
1027573bd7 added testtext - Nwanua 2000-07-13 23:48:02 +00:00
kojima
e958044d00 updated editable menu widget 2000-07-10 22:49:07 +00:00
kojima
e29fce43b1 - added WMGetLabelText()
- added WMReparentWidget()
- added WMCreateTabViewItem()
- added W_CreateUnmanagedTopView()
- fixed deletion from tree bag
2000-07-10 22:37:39 +00:00
dan
4cb5649545 Gaaah!
This thing is completely broken! There are functions that take a
completely different set of arguments than the ones currently used to call
them. There are even functions that are not defined anywhere but
called from wtext.c

Please fix it before re-enabling it in Makefile.am
2000-07-06 01:28:13 +00:00
kojima
fcab535c38 fixed lots of compile bugs in wtext.c and made a few api changes to it 2000-07-05 04:16:53 +00:00
dan
b50d6e566c Small fix. 2000-06-24 22:43:07 +00:00
dan
19a92de3e6 *** empty log message *** 2000-06-22 23:22:54 +00:00
dan
72538ed380 testtext.c doesn't compile. And it seems to require WINGsP.h which is
bad, bad, bad
2000-06-22 23:20:51 +00:00
dan
f0921472a8 I have nothing more to say about this. 2000-06-22 23:18:30 +00:00
dan
165b96f30f Gah, never say never. 2000-06-22 23:17:12 +00:00
dan
9d4dae947b Guess what? Yep, another wmtext update. Now this was all, please go to
your homes.
2000-06-22 23:01:27 +00:00
dan
c87c53fbe5 Yet another fix for the wmtext class. Thank you, thank you, thank you. 2000-06-22 22:55:36 +00:00
dan
4f3c453c12 Fix for compilation of ruler 2000-06-22 22:52:57 +00:00
dan
6de30498da Modified ruler stuff 2000-06-22 22:49:50 +00:00
dan
6f912eded3 Added new wruler.{c,h} files from nwanua 2000-06-22 22:26:43 +00:00
dan
738c72324b Added a missing enum that made compilation fail 2000-06-22 22:06:33 +00:00
kojima
ab801f3141 new rootmenu header 2000-06-21 22:26:15 +00:00
kojima
4905ab1986 renamed ParseCommand() to TokenizeString()
added rootmenu reader rewrite start
2000-06-21 22:25:10 +00:00
kojima
c49ad9cac8 added text widget from nwanua 2000-06-20 23:27:37 +00:00
kojima
e410e1862b fontset name guess when using multibyte 2000-06-17 19:07:57 +00:00
dan
4b2b2bcac3 Added spanish plmenu 2000-06-16 00:16:35 +00:00
dan
61b169f497 Added runtime option that lets one to set a small border around the
workspace that will not be covered by windows when maximizing, and thus
allowing easy access to the clip or menus using the mouse in this
border area, even when the screen is covered by windows maximized in
both horizontal and vertical directions.

A make clean is needed in src/ because new members were added to the
WPreferences structure in WindowMaker.h
2000-06-15 18:39:06 +00:00
kojima
ebf002b8d5 fixed redraw problem when frame title changes 2000-06-09 02:15:38 +00:00
dan
983e154118 - Fixed a bug with #define DEBUG (code didn't compile in that case) 2000-06-05 23:41:26 +00:00
kojima
15f9713a84 fixed crash bug when a texture cant be rendered 2000-06-04 02:09:10 +00:00
kojima
d869445950 - changed behaviour of control/shift double click on titlebar for maximize 2000-05-24 23:51:59 +00:00
dan
9e7242abe5 *** empty log message *** 2000-05-24 22:48:55 +00:00
dan
56cacb9336 Fixed the mdgradient code.
P.S. Please, that piece of code is perfectly valid, there's no need to
break it every month. There is nothing wrong with it, still it was
changed (and simultaneously broken) 4 or 5 times already.
That code use a smart trick to draw the multi diagonal gradient using
integer operations, that is perfectly valid and moreover is much faster
than the classical floating point calculation algorithm that was used
before, so there is no need to randomly 'fix' it every now and then.
If you don't understand how it works please ask.
2000-05-24 22:47:54 +00:00
kojima
3e0c6920a9 added it 2000-05-23 21:22:38 +00:00
kojima
d4c23fba79 added image browser start 2000-05-23 21:18:49 +00:00
kojima
05339d0d63 added start of gui wmaker.inst 2000-05-23 21:14:57 +00:00
kojima
e44130b51a few changes to WPrefs/appearance to accomote igradient 2000-05-22 03:24:40 +00:00
kojima
58b36ec1b3 added wmagnify 2000-05-22 03:09:20 +00:00
kojima
79ae37a35c added options to change default fonts 2000-05-21 23:56:33 +00:00
kojima
6947fd7b64 added new style 2000-05-21 16:35:13 +00:00
kojima
1e351cb59b added igradient texture
fixed some bugs
2000-05-21 16:34:23 +00:00
kojima
71f735069a *** empty log message *** 2000-05-21 16:15:56 +00:00
kojima
e7771be157 added interwoven gradient 2000-05-21 15:33:27 +00:00
dan
16949246ee *** empty log message *** 2000-05-16 12:11:29 +00:00
kojima
cdb148df48 added new style 2000-05-15 10:57:34 +00:00
dan
0ae1ecc05f Made the floppy path in the file panel be configurable via the FloppyPath
key in the WMGLOBAL file, instead of the '/floppy' hardcoded value.
2000-05-10 12:30:34 +00:00
dan
139b34c7af Mouse wheel code enhancement (need to check if its correctly implemented) 2000-05-08 22:15:05 +00:00
dan
27838589a5 Added connection opening timeout handling 2000-04-27 04:26:15 +00:00
dan
886e65f83e *** empty log message *** 2000-04-19 20:29:52 +00:00
dan
1e519308d3 *** empty log message *** 2000-04-19 19:57:20 +00:00
dan
5852c7506f fix for a possible crash in some circumstances, caused by an illegal mem
acccess.
2000-04-19 14:54:34 +00:00
dan
f3ed042f0c Small cleanup 2000-04-18 18:09:35 +00:00
kojima
3b28027dce repaint label after color change 2000-04-18 03:31:36 +00:00
dan
badfd68aef networking code fixes 2000-04-17 21:52:14 +00:00
dan
cf3bb1fd0e Bug fix in the networking code 2000-04-17 21:24:58 +00:00
dan
74bbc24da2 Fixed a really stupid crasing bug caused by those (unsigned char*) pointers
to data.
2000-04-14 06:18:38 +00:00
dan
a6e19eed31 *** empty log message *** 2000-04-14 03:55:26 +00:00
dan
fbc2c75c8a Small fix to the mouse wheel code 2000-04-13 21:40:57 +00:00
dan
5c76167098 Initial mouse wheel code. 2000-04-13 21:24:28 +00:00
dan
b188d55bbe Removed include of nana.h 2000-04-12 10:43:43 +00:00
dan
e222ba21bc Listed keys in wrong proplist 2000-04-12 02:16:01 +00:00
dan
c5f05b2815 *** empty log message *** 2000-04-12 01:46:43 +00:00
dan
51a638e821 Added a function to get all keys in a user defaults database (for databases
with dynamic contents, where the keys are not known in advance, like a
user = password; type UD database).
2000-04-12 01:45:42 +00:00
kojima
ccd419500f removed #include <nana.h> 2000-04-12 01:11:35 +00:00
kojima
5d855a167a updated portuguese po 2000-04-10 15:11:59 +00:00
dan
b5c565d21b removed again Makefile.in 2000-04-10 14:26:55 +00:00
kojima
9aa1d138a6 memory stats in info panel 2000-04-09 23:55:46 +00:00
kojima
c08022a088 updated upzzle, removed SetWindowInitialSize added SetWindowAspectRatio 2000-04-09 23:06:55 +00:00
kojima
779cdb0dd4 added quick&dirty game 2000-04-09 21:46:54 +00:00
dan
27e161cea4 Removed un-needed member in the data structure. 2000-04-09 02:57:39 +00:00
dan
b37b0fd9f1 small correction to previous patch 2000-04-09 02:42:32 +00:00
kojima
0fd531df43 fixed restart crash bug
updated kwm hint
made kwm&gnome hints mutually exclusive (for read)
2000-04-09 02:36:48 +00:00
dan
b8ca9e2b64 Fixed behaviour of WMData objects regarding the destructor.
Merged WMCreateDataWithBytesNoCopy with WMCreateDataWithBytesAndDestructor.
2000-04-09 02:32:17 +00:00
kojima
0b87b7fab9 fixed crash on restart bug 2000-04-08 23:53:22 +00:00
kojima
bdd5d5342b fixed crash on restart 2000-04-08 23:13:25 +00:00
dan
3e7eb14a22 *** empty log message *** 2000-04-08 03:48:59 +00:00
kojima
fa9bfc9794 updated get/setstyle for new options 2000-04-07 23:20:41 +00:00
kojima
caa86529a9 more dnd changes
window cycling stuff
finnish pot files
2000-04-07 22:47:04 +00:00
kojima
6b93946309 added option for std cmap creation in wrlib 2000-04-07 22:43:26 +00:00
kojima
af3f33ecb9 fixed prob with window shortcut state saving 2000-04-05 17:35:33 +00:00
kojima
11bf9c8038 dnd changes 2000-04-05 00:29:10 +00:00
kojima
8ccb875468 fixed user whining bug 2000-04-04 03:10:40 +00:00
kojima
760c552584 dnd changes 2000-04-04 02:27:45 +00:00
kojima
2c0fdba09e added extension for mouseoffset in dnd 2000-04-03 15:23:32 +00:00
kojima
2905590520 updated selection stuff 2000-04-03 14:53:00 +00:00
kojima
d912ddd743 dnd test fix 2000-04-03 14:14:14 +00:00
kojima
567e53c67c added drag and drop 2000-04-03 06:08:31 +00:00
kojima
60a247f271 drag and drop!
selection code rewrite!
textfield with new selection code!
etc etc
2000-04-03 03:10:20 +00:00
dan
a5f7e65111 Use a var for libPropList version in configure.in (easier to update). 2000-04-02 21:15:32 +00:00
kojima
cc22ef1f20 removed stale makefile.in
added finnish menus
2000-04-02 20:47:28 +00:00
kojima
97afbce72e updated finnish translation
made make install only install icons of suported format
2000-04-02 20:41:48 +00:00
kojima
47e33ab485 little change in 8bpp code 2000-04-02 20:30:57 +00:00
kojima
2c16005643 check for libproplist 0.10.1 2000-04-02 20:27:07 +00:00
kojima
ee21c5bea6 changed iface of WMFindInBag 2000-04-02 20:16:30 +00:00
dan
fc2a87c645 *** empty log message *** 2000-04-02 18:06:15 +00:00
kojima
379df781b2 temporary fix to windw cycle bug 2000-04-02 00:10:20 +00:00
kojima
449a5fde76 fixed misc bugs 2000-04-02 00:04:06 +00:00
kojima
ead4f5d3e1 *** empty log message *** 2000-04-02 00:02:44 +00:00
kojima
8c69765725 bla 2000-04-02 00:01:30 +00:00
kojima
0c010ba778 fixed insert 2000-04-01 23:56:37 +00:00
kojima
32160ff66f added code to store lowered state of menus
compat code for XInternAtoms
2000-04-01 02:16:14 +00:00
kojima
e7f7030e1b fixed #includes 2000-04-01 02:14:12 +00:00
kojima
5b05c9607c added compatib. code for XInternAtoms 2000-04-01 02:12:25 +00:00
kojima
036086daa4 added check for XInternAtoms 2000-04-01 02:11:33 +00:00
kojima
7ab059a165 removed // comments 2000-03-31 14:38:53 +00:00
kojima
e3b9e3917a removed // commenst 2000-03-31 14:35:33 +00:00
dan
58e0b92fe2 Added a small script to help in generating the autoconf/automake/libtool
files quickly
2000-03-31 00:49:20 +00:00
dan
cf65d791ab 0.62.0 release preparation 2000-03-30 23:32:36 +00:00
kojima
a29175db52 removed docklib 2000-03-30 21:19:31 +00:00
kojima
2acc122e2c fixed prob with es.po 2000-03-30 21:07:46 +00:00
dan
5730c765c3 Fix for non-gcc compilers 2000-03-30 04:52:43 +00:00
kojima
b40d52edd6 *** empty log message *** 2000-03-30 04:41:35 +00:00
dan
046fe3f1ca *** empty log message *** 2000-03-30 04:26:21 +00:00
dan
ce9c88c0e8 *** empty log message *** 2000-03-30 04:26:20 +00:00
kojima
cc5592f087 *** empty log message *** 2000-03-30 04:17:56 +00:00
kojima
1dc1f56802 fixed problem with filter selection for scaling 2000-03-30 04:03:24 +00:00
kojima
27b9c077a4 fixed bug with window moving 2000-03-30 03:54:10 +00:00
dan
355fffe3c4 *** empty log message *** 2000-03-30 03:34:04 +00:00
kojima
6d81ede842 real fix now.. 2000-03-30 03:32:23 +00:00
dan
24416415a6 removed all files generated by autoconf & friends 2000-03-30 03:31:45 +00:00
kojima
c6498bebd8 fixed MAX_WINDOW_LEVEL oops 2000-03-30 03:28:32 +00:00
kojima
f65c549814 fixed bug with bag sorting
fixed bug with stacking code
2000-03-30 02:52:07 +00:00
dan
15734b9147 Fix for stupid Solaris (maybe other Sysv systems too). 2000-03-30 02:38:22 +00:00
kojima
137ce7e0f1 added sorting to tree bag 2000-03-29 19:09:59 +00:00
kojima
7bb187a3b3 added sorting 2000-03-29 19:01:31 +00:00
dan
fb51ee83b7 *** empty log message *** 2000-03-29 04:56:41 +00:00
kojima
3d7cb106af fixed memory leaks and crash with deminiaturization 2000-03-29 03:58:25 +00:00
kojima
03e14f363f fixed many bugs related from stacking and old ones too 2000-03-29 03:23:38 +00:00
dan
d267d17621 *** empty log message *** 2000-03-29 02:42:41 +00:00
kojima
9e45e85dc6 bag tree finished.. updated code to new bags 2000-03-29 02:17:39 +00:00
dan
8219011758 *** empty log message *** 2000-03-29 02:03:47 +00:00
id
2e154a404d *** empty log message *** 2000-03-29 01:49:05 +00:00
id
a652f23c40 not too bright 2000-03-29 01:18:54 +00:00
dan
cd079b9d3c new icon change 2000-03-29 01:04:11 +00:00
dan
a4cd5b7c9a 2 new icons 2000-03-29 00:00:28 +00:00
kojima
d82906b4b7 fixed portability buglet.. 2000-03-28 08:43:09 +00:00
kojima
190cd648e1 removed list bag 2000-03-28 02:55:12 +00:00
kojima
f5177e67d5 updated code to use new bags
arbitrary window levels
2000-03-28 02:48:32 +00:00
kojima
6672180d77 removed listbag added tree bag
started drag & drop
2000-03-28 02:30:13 +00:00
id
20c8f4fd58 fix icons 2000-03-27 04:53:39 +00:00
dan
41bbee7f38 New and more suggestive icon for menu editing. 2000-03-27 01:13:21 +00:00
dan
bdfd7788cf Stupid symlink stuff updated. 2000-03-25 01:30:11 +00:00
dan
fb802f2d6e *** empty log message *** 2000-03-24 02:15:35 +00:00
kojima
85ee588aa6 added arbitrary window levels 2000-03-24 01:16:02 +00:00
kojima
5bd797b066 fixed color dragging from colorwell 2000-03-24 01:11:54 +00:00
dan
62a929a231 Fixed crashing bug in wmsetbg.c 2000-03-20 02:15:48 +00:00
id
e43e1fe2f7 addition magnify icons 2000-03-15 01:25:57 +00:00
dan
c7fa92794b *** empty log message *** 2000-03-14 01:14:21 +00:00
dan
4587f126c0 *** empty log message *** 2000-03-14 01:07:01 +00:00
dan
f711e49c17 *** empty log message *** 2000-03-14 00:50:42 +00:00
dan
98f5c6ff36 *** empty log message *** 2000-03-14 00:50:42 +00:00
dan
3c5f5cba0e *** empty log message *** 2000-03-14 00:29:32 +00:00
dan
e9cb10749b *** empty log message *** 2000-03-10 22:48:51 +00:00
kojima
956c167bbf er.. dunno 2000-03-10 18:40:13 +00:00
id
1315875ee0 makefile.am for icons 2000-03-10 07:44:41 +00:00
kojima
90ab2c15cb made restore from winspector.c automatically apply 2000-03-10 00:28:55 +00:00
kojima
150432ff95 added RFillImage 2000-03-09 22:22:41 +00:00
kojima
9915c4ab2a *** empty log message *** 2000-03-09 18:50:26 +00:00
kojima
817f30a754 made transients appear near their owners 2000-03-09 18:41:30 +00:00
kojima
39314191ad updated spanish translation 2000-03-08 17:55:17 +00:00
richard
3d20415b8e Added more window masks 2000-03-08 17:37:35 +00:00
richard
4932d4aef8 Fix error setting window level. 2000-03-08 17:09:55 +00:00
richard
9685ae0815 Corrected code reporting retults of window configure/move so that the border
of the frame window is allowed for and the absolute scrren coordinates of the
child appear in the configure notify.
2000-03-08 13:26:13 +00:00
richard
d94626fd70 Revert mistakenly applied change 2000-03-08 12:48:27 +00:00
richard
2f09891b60 Fix border adjustments for resizing windows 2000-03-08 10:38:12 +00:00
richard
db594a9b89 Fix bug in coordinates reported after a window configure 2000-03-07 20:03:05 +00:00
id
b8ec94f941 addition icons 2000-03-07 08:39:17 +00:00
kojima
b974bd7e78 fixed image clearing 2000-03-07 01:12:12 +00:00
richard
0f9aa277c1 Support for GNUstep control of window titlebars added. 2000-03-06 22:45:04 +00:00
kojima
6c8226a52f fixed lockup when multi-clicking menu 2000-03-06 21:52:43 +00:00
kojima
553539748d added missing macro for bag 2000-03-06 02:54:45 +00:00
kojima
1dc5c1882c added list and array backends for WMBag 2000-03-05 22:01:34 +00:00
id
e9ee3765f9 Work around the definable cursor patch. 2000-03-04 07:54:48 +00:00
id
37217ce180 put back TITLEBAR_EXTEND_SPACE but with default value = 4 instead
change cursor fonts' behavior
2000-03-04 01:22:30 +00:00
kojima
93941b2c03 *** empty log message *** 2000-03-04 00:18:13 +00:00
kojima
41334b84d5 added configurable cursor path
added some GNUstep support code
2000-03-03 20:55:35 +00:00
kojima
d97997b5e9 *** empty log message *** 2000-03-03 20:28:44 +00:00
id
225c60f2f9 icon, the xpm 2000-03-03 19:09:07 +00:00
id
6ec0f20d6a fix again :) 2000-03-03 19:03:38 +00:00
id
210dd8ce36 fix a bit 2000-03-03 18:56:17 +00:00
id
e27ac1e643 WPrefs.app icons 2000-03-03 17:51:54 +00:00
kojima
5a89cfae86 new icons 2000-03-03 02:28:12 +00:00
kojima
e8ecd3d559 fixed buglet in atom creation 2000-03-02 21:15:13 +00:00
richard
e03f8e6847 Set 'is_gnustep' flag for a window if the window Class hint is 'GNUstep' 2000-03-02 10:35:06 +00:00
richard
0af2448349 Added support for client message to set window levels and added partial
support for client message to set window titlebar decoration.
2000-03-02 07:36:02 +00:00
kojima
f7fe1b2e94 *** empty log message *** 2000-03-01 08:15:56 +00:00
kojima
2090f81b40 isprint() used in place of !iscntrl() 2000-02-29 21:50:35 +00:00
kojima
34c4040d91 gif update from Graham Whitted <gbw@sgrail.com>
removed cycle_bench() from testgrad
2000-02-29 18:10:27 +00:00
kojima
fea35bfc99 resource leak fix 2000-02-27 19:52:58 +00:00
kojima
65f5627d98 rotation test code 2000-02-27 19:52:23 +00:00
kojima
182ecaf0f6 added rotate code 2000-02-27 19:51:57 +00:00
kojima
0efd007607 added rotation 2000-02-27 19:51:30 +00:00
kojima
13b197ff5b *** empty log message *** 2000-02-26 15:03:08 +00:00
dan
0e22fc0293 *** empty log message *** 2000-02-25 00:43:03 +00:00
id
2f9eb0703b remove default for titlebar_extend_space ( I've removed it so I am not
sure what I just removed ) and change to

#define DEF_WINDOW_TITLE_EXTEND_SPACE "4"
#define DEF_MENU_TITLE_EXTEND_SPACE "4"
#define DEF_MENU_TEXT_EXTEND_SPACE "0"
2000-02-24 22:31:00 +00:00
kojima
08e7220dfe *** empty log message *** 2000-02-24 17:03:07 +00:00
kojima
ac38d149e0 *** empty log message *** 2000-02-20 23:54:39 +00:00
kojima
754230a6b7 added icon tile hint
other stuff
2000-02-16 18:26:15 +00:00
kojima
a0ebed9cb2 *** empty log message *** 2000-02-16 18:22:46 +00:00
dan
23c40b0540 Updated korean po files. 2000-02-15 01:37:02 +00:00
kojima
c7e2b37083 added spec for rpm.. 2000-02-11 19:44:19 +00:00
dan
5d5eaf33e4 Placed cycle_bench(1) at the correct position. 2000-02-09 03:46:55 +00:00
dan
d5c2da25c4 Just a small sync of files 2000-01-24 00:12:09 +00:00
dan
08b0a885d1 Fixed diagonal gradients. 2000-01-22 22:07:44 +00:00
kojima
a2ae76e274 small fix 2000-01-21 21:25:41 +00:00
kojima
58ca0c2824 asm optimization for 8bpp (no mmx) 2000-01-21 21:04:20 +00:00
kojima
34cd5125e3 fixed bug with icons of different sizes
made Apply work in window inspector for windows with no WM_CLASS
2000-01-20 11:51:42 +00:00
kojima
ae354fc758 changed wprefs icons 2000-01-20 11:50:35 +00:00
dan
9b10e8d034 A new fix, for some register restoral. 2000-01-20 05:42:07 +00:00
dan
3b374faadc Forgot the 'popal' at the end of asm. 2000-01-20 04:52:42 +00:00
dan
a5cc413432 Fixed code for MMX detection to work. 2000-01-20 04:47:03 +00:00
kojima
1e5a1d8c91 fixed bug with RCreateImageFromXImage() with mask and image of != sizes
fixed dgradient rendering
2000-01-19 21:25:03 +00:00
kojima
0780ab82fe ooptimized code for 8bpp/PseudoColor 2000-01-19 17:47:35 +00:00
kojima
ec5f3a294e changed sound server code 2000-01-18 17:11:51 +00:00
dan
0d1935e3d8 Fixed a crashing bug in the multi vertical gradient code. 2000-01-17 04:30:52 +00:00
dan
14939535b6 Misc bug fixes 2000-01-17 03:07:18 +00:00
dan
23c0cda243 Fixed bugs in raster.c code. Fixes bad icon image with some images. 2000-01-16 03:56:14 +00:00
dan
e18cba4da9 Some fixes from Alban 2000-01-16 02:08:38 +00:00
dan
b7296cff16 Fixed a bug in scaling code. 2000-01-15 22:11:18 +00:00
dan
049a69a9bf - Added a test in configure for the version of libPropList that is installed
on the system. Further compilation will be aborted if the version of
  libPropList that is found is older than expected. Hopefully this will make
  go away some annoying messages from people unable to read the release
  notes.
- Implemented periodic synchronization of user defaults in WINGs and
  notification when user defaults gets changed.
- Fixed the color panel to compile (someone in charge with it check if its
  ok, I only changed where the compiler complained, didn't go through the
  code).
- Misc fixes, related to latest changes in wrlib.
2000-01-15 02:00:24 +00:00
dan
8e872f4efd Again, don't be rude on people. 2000-01-15 01:40:53 +00:00
kojima
f316df83c9 #ifdefe'd #include bench,h 2000-01-14 23:48:13 +00:00
kojima
18cbed4750 benchmark on pentium stuff 2000-01-14 23:37:20 +00:00
kojima
7df3e111bc updated configure to detect x86 2000-01-14 16:48:16 +00:00
kojima
dd1d08461c window position/size display widget 2000-01-14 16:46:43 +00:00
kojima
f9851d88f1 updated font configuration panel 2000-01-14 16:41:44 +00:00
kojima
a30475fc0f changed format of RImage, added x86 speicfic optimized code 2000-01-14 16:39:15 +00:00
kojima
f2de1c9dcf changed geometry display stuff
fixed colormap windows crash bug
2000-01-14 16:30:56 +00:00
id
f10d928e0a fix an ExtendSpace bug 2000-01-11 23:18:23 +00:00
id
808d4e7df0 change Clearance to ExtendSpace. Also add ExtendSpace option for menu
title and menu text..
2000-01-11 23:15:51 +00:00
dan
c6bc1227de The right fix for the comparison of hosts. Previous was not good. 2000-01-11 22:07:21 +00:00
dan
e474e18f23 Small bug fix regarding comparison of hosts. 2000-01-11 21:33:18 +00:00
id
9fe3f77559 clearance for text on titlebar. 2000-01-11 07:48:11 +00:00
dan
eca1fc5e9f - converted all floats to double. 2000-01-10 22:12:07 +00:00
dan
448b08de0b - Fixed some compilation problem with non-existent function on so platforms 2000-01-09 05:28:30 +00:00
kojima
3a47d8430e fixed bug when trying to assign window shortcut in empty workspace 2000-01-09 01:23:42 +00:00
dan
ae22c4dc1d Some more fixes from Alban to the color panel. 2000-01-07 22:17:59 +00:00
dan
503c1e8864 Fixed big memory leak in color panel code (patch from Pascal). 2000-01-07 22:08:35 +00:00
kojima
d98f1fa645 aplied colorpanel fix patches 2000-01-06 21:56:39 +00:00
dan
dba6e4d2d0 - Fixed a bug in popup button code.
- Added functions to allow the color of the text in buttons to be specified.
2000-01-05 22:02:22 +00:00
dan
d5f177fe66 - Put back DisplayFont in defaults.c. It either was removed by error, or the
change was incomplete (it was still accessed as a 0x0 pointer from
  moveres.c at least).
- Removed innapropriate comments about sloppy focus from dialog.c.
  Even if we think it's not a good focus mode, and don't like it, there is no
  need to be rude with people who use it. Better not support sloppy focus at
  all, than to suport it and tell to its users they're stupid.
2000-01-05 21:58:04 +00:00
dan
8073c07601 Color update in the menu files 2000-01-04 21:45:57 +00:00
kojima
96902f5b9d fixed bug of handling non string values in string type options in defaults.c 2000-01-03 23:57:52 +00:00
id
95e71d500a Fixes from Alban and Pascal. 1999-12-29 11:59:30 +00:00
id
8eb0c79c54 Virtual desktop code (very experiment!!!!!) 1999-12-18 11:52:49 +00:00
dan
087fc7c82c Fixes in the host class 1999-12-14 21:35:28 +00:00
dan
bf4c63d657 Updated for changes in WINGs directory 1999-12-14 05:34:15 +00:00
dan
b33d6351e5 Added get-wings-flags and get-wutil-flags 1999-12-14 05:31:49 +00:00
dan
87368574a3 Small enhance to connection client example. 1999-12-14 04:41:56 +00:00
dan
285dea0340 This should be the last try with autoconf & friends for Solaris >:-| 1999-12-14 04:09:59 +00:00
dan
3c5a587313 Another try with autoconf on Solaris. 1999-12-14 03:48:06 +00:00
dan
534bb721a9 New try :) 1999-12-14 03:26:52 +00:00
dan
2472bd3c89 Another try with autoconf 1999-12-14 03:24:38 +00:00
dan
3f9b7858df Fixed some compilation problems for solaris 1999-12-14 02:21:04 +00:00
dan
e5a7a883eb Added an example of how to create a network client using WMConnection 1999-12-14 01:45:16 +00:00
dan
c952eb84ae Fixed a platform dependant problem. 1999-12-14 01:21:56 +00:00
dan
9c59becb31 Added 3 new classes: WMData, WMHost, WMConnection 1999-12-14 01:07:24 +00:00
id
d39bb888a0 From man localtime, January is 0 and December is 11, compare it to 12 won't do such a thing. 1999-12-12 23:53:23 +00:00
dan
03748f0fbe removed WErrorCode 1999-12-12 20:35:12 +00:00
dan
9e47eba187 - Added a global var WErrorCode similar to errno or RErrorCode.
- New function wsyserrorwithcode(), like wsyserror() for prints the message
  for the specified error code, instead of errno. This is for cases where
  you can't call wsyserror() immediately after the error, but save errno
  code for a later use.
1999-12-12 04:17:18 +00:00
id
adaa3e0aeb another assert crash. 1999-12-11 21:37:58 +00:00
id
c4c42d9ff6 fix an assert crash. 1999-12-11 21:22:56 +00:00
id
c2cbce6d84 fix an assert crash. 1999-12-11 02:34:07 +00:00
dan
bb75616aad Added char* wsterrror(int errnum) to return the string associated with errnum
This works even on platforms that don't provide strerror().
1999-12-11 00:39:57 +00:00
dan
4b69ea222e Changed wrealloc's behaviour to call wfree() and return NULL if the newly
requested size is 0.
1999-12-06 02:12:30 +00:00
dan
34c926186c Rewrote idle and input handlers using WMBag to avoid a functional problem of
them, regarding removal of other input/idle handlers next to the called one,
from the called handler.
1999-12-03 07:07:14 +00:00
dan
8800cd0b67 Fixed a crashing bug 1999-12-03 02:59:30 +00:00
dan
3a8499143f Some menu entry beautification 1999-12-03 00:25:00 +00:00
dan
ef42fce3e6 Fixed wrealloc() to be consistent with the wmalloc() behaviour when it cannot
allocate memory.
1999-12-01 22:25:48 +00:00
dan
c914639b8c Fixed a function name. 1999-12-01 00:43:24 +00:00
dan
4313762bdb Added some () and a comment. 1999-11-26 23:59:06 +00:00
dan
5e32d1cb4f input handler again. forgot some paranthesis. 1999-11-22 04:53:32 +00:00
dan
d6fb042749 Fixed a bug in input event handling. 1999-11-22 04:40:16 +00:00
dan
8b062b07c1 - fixed the checkTimerHandlers() to flush the ASAP notification queue, even
if there are no timer handlers.
- an array was too small in TexturePanel.c (4 instead of 5).
1999-11-20 22:29:58 +00:00
dan
9eb9198bad Fixed a problem in notification queuing (the coalescing was done wrong if
both name and sender were specified).
1999-11-18 01:43:08 +00:00
dan
1d56ad7615 - Fixed problem calling W_FlushIdleNotificationQueue() when there was no idle
handler installed.
- Fixed some problem with ASAP notification queues
- fixed a memleak related to notification queues.
1999-11-17 22:01:33 +00:00
kojima
06b390ca01 fixed idle notification posting 1999-11-17 21:35:02 +00:00
kojima
8cd13fe96e few more fixes to std colormap code 1999-11-16 01:53:43 +00:00
kojima
7698ba2f1c - added standard colormap support
- made icon images scale in the same proportion as the tiles
1999-11-16 00:16:07 +00:00
kojima
33b8c225e1 - standard colormap support for PseudoColor visuals
- set wrlib library version to 4:0:3 (1.3.0)
1999-11-16 00:13:21 +00:00
dan
38807b65c7 - fixed a bug that crashed the programm when a popup button was scrolled.
- fixed a bug that caused incorrect drawing position of the popup indicator.
- fixed a bug that prevented selecting no item (-1) in a popup button.
- an assertion will be raised if the program tries to select a popup button
  item that is beyond the total number of items present in the popup button.
- changed names of functions for SplitView to be consistent. Some contained
  SubView while other Subview. Now all have Subview.
1999-11-07 21:40:22 +00:00
kojima
eaba3dc788 fixed bug in popupbutton scrolling 1999-11-07 13:15:03 +00:00
dan
24682a9471 Syncing files. configure become a 0 length file in the previous commit. 1999-11-06 21:53:53 +00:00
kojima
1176559ef7 changed back default png gamma to 2.0 1999-11-05 23:42:38 +00:00
kojima
a1e552d988 removed broken optiomized selection frame patch
added Select Window button to attribute panel
1999-11-05 23:23:48 +00:00
kojima
7347ef3a2f nothing 1999-11-05 23:16:56 +00:00
dan
aa27686912 Fixed problems in menu scrolling caused by the patch sent by Swivel. 1999-11-05 22:36:46 +00:00
kojima
90f1b587c4 fixed bug in repainting empty popup buttons 1999-11-02 21:28:08 +00:00
dan
d425538578 Changed the browser to use bold fonts for branches. Hardcoded for now. 1999-11-02 21:17:07 +00:00
kojima
a5203640f6 fixed crash in workspace panel 1999-11-01 15:45:07 +00:00
id
8c09918339 change x to xp and y to yp by guessing, hope it is correct. 1999-10-29 12:40:06 +00:00
kojima
94f4483dbd multiview and vertical splitview
some bug fixes
configurable default font size
etc
1999-10-27 22:32:12 +00:00
kojima
4e65111750 added portuguese README 1999-10-27 22:29:49 +00:00
dan
9c2026eb44 syncing wtextfield.c 1999-10-24 22:48:11 +00:00
kojima
e4ac18c04d added new sound events 1999-10-24 08:59:19 +00:00
kojima
0ccb32dab9 added workspacename.xpm 1999-10-23 21:58:36 +00:00
kojima
8163b93a99 added ws name position in workspace section 1999-10-23 21:57:52 +00:00
dan
597b04f5f7 - Fixed name completion problem in file panel.
- fixed a problem about how notifications were sent for textfield events.
1999-10-23 21:06:11 +00:00
dan
6dd37d5972 Syncing the code for discussing it. 1999-10-22 23:39:39 +00:00
dan
652caa1f93 - Fixed a bug in dock, and a typo.
- syncing the source tree.
1999-10-21 00:54:37 +00:00
kojima
0faaf3fa68 added menu item objetc 1999-10-20 03:33:19 +00:00
kojima
eb87c40967 added nana stuff
added lock option in docked icons
1999-10-20 03:25:06 +00:00
kojima
914648cc2b abort configure when X is not found 1999-10-20 03:21:02 +00:00
dan
471862a8b1 Forgot to update the changelog 1999-10-17 00:40:07 +00:00
dan
d4ebd574d2 Fixed crashing bug in WPrefs.app's appereance section. 1999-10-17 00:38:35 +00:00
id
b47c417b72 xdnd and qt 1999-10-16 05:38:15 +00:00
id
f7016a0be6 qt 2 specific fix. 1999-10-16 05:32:14 +00:00
dan
5385a02b33 Fixed bug with sorting list items in WINGs 1999-10-16 03:02:19 +00:00
dan
08903ea9ea Removed some #if 0 ... #endif surrounded code, related to KeepAttractedIcons 1999-10-14 00:45:52 +00:00
dan
d6566ff6bd Removed "Keep Attracted Icons" from Clip's menu. 1999-10-13 21:22:37 +00:00
kojima
cce4ef3664 added emerald style 1999-10-12 22:59:16 +00:00
kojima
1c03cc4422 new style file 1999-10-12 07:55:59 +00:00
kojima
80fb09a74e replaced free() with wfree() everywhere
fixed bug in wlist that caused colorpanel to crash
1999-10-09 20:07:23 +00:00
dan
3ac51d8e32 Updated korean menu files 1999-10-08 16:22:05 +00:00
dan
d66f23813b Added WMSaveUserDefaults() 1999-10-08 03:32:55 +00:00
dan
f51a301fb9 bug fix in WINGs bag.c WMInsertInBag(). 1999-10-07 21:05:47 +00:00
dan
1401269ae4 fixed WMInsertInBag 1999-10-07 19:13:05 +00:00
dan
28636cc873 Updated menu.pl, and added plmenu.pl (polish) 1999-10-07 17:03:20 +00:00
dan
c11f146ec0 - Korean po file update.
- Added note about new libPropList requirement in NEWS, so bonehead users
  will maybe stop flooding the bug tracker and the mailing lists with their
  crap.
1999-10-07 01:18:59 +00:00
dan
d7937630b2 Chnaged user defaults to use PLShallowSynchronize instead of PLSave 1999-10-04 00:18:08 +00:00
kojima
1c64c62b3b undocumented WMGetListItems() 1999-10-03 18:46:22 +00:00
kojima
28f185d801 fixed crash in appearances section 1999-10-03 18:35:25 +00:00
kojima
e82c30b205 replaced linked list with WMBag in WMList
replaced WMAddSorted*** with WMSort***
fixed crash bug in icon chooser
1999-10-03 03:47:21 +00:00
dan
e2dba622bf Removed testnot.c from distrib 1999-10-02 21:57:16 +00:00
dan
d527e845c5 Chnaged version number to 0.61.1 1999-10-02 21:40:37 +00:00
dan
b76072162d Syncing files. 1999-10-02 21:13:24 +00:00
kojima
2064d9359c added polish po file 1999-10-02 20:53:29 +00:00
kojima
dbdb44a4db added patch with bugfixes for wings/textfield/panel exit with escape/bag etc
changed iconchooser to center icons/text
updated po files
1999-10-02 20:24:41 +00:00
kojima
4545d536bd changelog 1999-10-02 20:13:01 +00:00
id
c8e0f4164d new icon chooser dialog. 1999-10-02 19:16:27 +00:00
id
66972237a3 *** empty log message *** 1999-10-01 20:12:57 +00:00
id
b703b7428d fix dropped data, add "" to crop filename. 1999-10-01 20:10:00 +00:00
id
d220b22b81 to load None button correctly. 1999-09-29 09:47:12 +00:00
dan
845ceca24c syncing trees 1999-09-27 15:58:05 +00:00
dan
d1ee3cadb3 Fixed crashing bug related to omnipresent icons in clip (fixes bug #1167) 1999-09-26 01:29:04 +00:00
dan
9b34f23b50 Fixed a bug with a patch sent to wm-dev by someone. 1999-09-25 22:02:54 +00:00
id
0092ff64f0 I am not sure this is a correct fix. But GNOME has appicon which may has
different class name from the window. Such as GnomeTerminal.GnomeTerminal
may have appicon name gnome-terminal.Gnome-terminal.
1999-09-25 15:02:59 +00:00
id
c7bc663b55 clean the fixes. 1999-09-24 12:20:54 +00:00
id
6f28a38d4d try to fix open menus, hope it worx. 1999-09-24 08:12:18 +00:00
id
a0d037e6fc fix a bug relate to how WMBag work in move/resize window with keyboard. 1999-09-24 03:45:51 +00:00
dan
fb0710d31a Updated korean po files 1999-09-22 20:54:24 +00:00
dan
b28e491fd4 Fixed compile proflem in fontpanel 1999-09-22 19:51:47 +00:00
kojima
d5fbe62ddd fixed font bug in WINGs
font panel problems
po file problems
misc bugs
1999-09-22 02:09:42 +00:00
kojima
54e241d2fc fixed font bug in WINGs 1999-09-22 02:03:39 +00:00
dan
412b2a052e Fixed crashing bug on restart/exit/save session. 1999-09-22 00:25:46 +00:00
dan
2525c5d1fa Fixed problem with "make dist", generated by flags placed in the wrong place
in WINGs/Makefile.am for testnot program.
1999-09-20 20:20:05 +00:00
dan
0a615406df Fixed compile problems. 1999-09-20 20:07:32 +00:00
kojima
a06f09c849 fixed crash bug on mouse panel 1999-09-19 20:56:43 +00:00
dan
48bbd508e1 Fixed problem with undefined EXTENDED_WINDOWSHORTCUTS in WPrefs.app 1999-09-19 14:43:00 +00:00
kojima
0764c169a4 updated little bug for testnot linking 1999-09-19 02:05:43 +00:00
kojima
fc1c86a87e renamed dprintf to dbprintf 1999-09-19 01:49:59 +00:00
kojima
5b9b715cc4 default system font string (which is readonly) overwrite bug fix 1999-09-19 01:30:13 +00:00
kojima
e7df5ed456 font panel and textfield font 1999-09-18 22:57:19 +00:00
dan
3aa1d977b7 fixed some compilation warnings. 1999-09-18 22:50:11 +00:00
kojima
057da64de7 fixed crash on restart 1999-09-18 22:38:17 +00:00
dan
81c2bf97c2 Removed some unneded files (generated anyway fom .in files) from the generated
tar-ball.
1999-09-18 21:19:41 +00:00
kojima
5c88136401 fixed directory OPEN_MENU sorting bug and shortcut selection window problems 1999-09-18 21:17:03 +00:00
dan
e230ca4245 misc bug fixes. 1999-09-18 20:37:23 +00:00
dan
5f4618e8e7 Sync 1999-09-18 00:09:30 +00:00
dan
72ac523394 reverted to KeepInsideScreen 1999-09-17 23:57:48 +00:00
dan
dfe360e5c0 - Fixed the PPosition/PSize code (I hope) --Dan
- removed "Ignore PPosition/PSize hints" user options, and reverted to
  the old "Keep Inside Screen"
1999-09-17 23:52:59 +00:00
dan
c917f68883 Changed "Keep Inside Screen" user option with "Ignore PPosition/PSize hints" 1999-09-17 22:11:43 +00:00
kojima
0e263f7394 fixed hashtable crash bug with WMStringHashCallbacks 1999-09-17 22:10:28 +00:00
kojima
d565c36ef9 added DontConfirmKill option 1999-09-17 21:03:54 +00:00
kojima
9908327a4f updated default window attributes for IgnoreGeometryHints 1999-09-17 20:44:56 +00:00
dan
4dabd2ec8c - Fixed function naming problem in WINGs. 1999-09-17 16:42:36 +00:00
dan
ac64e68fcb - Fixed compilation warnings.
- Readded 'Auto placement' mode, with the old behavior, and made
  'Smart placement' mode behave in the new way.
  Auto and Smart are no longer aliases.
1999-09-17 16:18:37 +00:00
dan
a66bff850c syncing trees. 1999-09-17 02:19:11 +00:00
kojima
b1554bcd80 fixed little bug with new SYSCONFDIR 1999-09-17 02:11:04 +00:00
kojima
85afb7a1b6 updated for new sysconfdir 1999-09-17 02:00:22 +00:00
kojima
7c930d1e2a removed some uneeded files 1999-09-17 01:54:38 +00:00
dan
623106e922 Changed PPosition fix a little. 1999-09-17 01:07:27 +00:00
dan
8747093e64 - Fixed some compilation problems, which could lead to sigsegv at run time in
the new 'bag' code.
- Fixed PPosition problem.
1999-09-16 21:52:18 +00:00
kojima
ac4053478a updated po files, fixed some bugs 1999-09-16 03:01:14 +00:00
kojima
3c04618278 fixed many bugs, removed linked list 1999-09-16 02:58:56 +00:00
kojima
052ab01c84 replaced linked lists with WMBag, added progress indicator 1999-09-16 02:55:56 +00:00
kojima
54c54401d4 replaced linked lists with WMBag, added progress indicator, fixed many bugs 1999-09-16 02:26:05 +00:00
id
b59afcffc7 modify drop shadow example. 1999-09-13 20:36:53 +00:00
id
c38079190a forget to remove binary out. 1999-09-13 20:17:14 +00:00
id
32f123d43d fix the file that tar up wrong directory. 1999-09-13 20:08:43 +00:00
dan
f2f71a1f09 Finished the libWUtil library. 1999-09-10 20:13:44 +00:00
dan
d214a2ca98 Started to make modifications to support libWUtil 1999-09-09 13:46:59 +00:00
dan
65f617ad0c Syncing some libtool files. 1999-08-30 19:51:07 +00:00
id
6f119bd0ab this is an experiment, I add a drawstring function to be used as
drawstring example, Please beware not to distribute both libwmfun files.
1999-08-23 12:21:26 +00:00
id
4384ccd5b0 cleaning up plugin code. 1999-08-23 12:12:01 +00:00
id
dc0d9cff70 Removed titlebar drop shadow code and add plugin to draw text on titlebars. 1999-08-19 18:47:00 +00:00
dan
124822d720 Fixed code in wevent.c to allow the callback handler to remove its InputHandler
if the peer closed connection.
1999-08-08 20:12:08 +00:00
id
b81ce0caa5 Not sure if I am correct, this removed delay of balloon mapping if mouse
is traveled between appicon and mini window.
1999-08-03 15:24:02 +00:00
id
c15be3e163 ObiTuarY's po stuff. 1999-08-02 18:28:13 +00:00
id
5764aa41cd Alfredo's fix on a mag glass relate bug.. 1999-07-31 20:48:25 +00:00
id
4468346353 put WPrefs.app in default menu... hope it is a good place 1999-07-30 22:04:25 +00:00
id
14ab80511e nonresistancy sinking windows 1999-07-26 15:58:46 +00:00
id
6dbd586586 Resistance shouldn't apply to sinking windows to prevent gmc icons.... 1999-07-26 15:56:09 +00:00
dan
d7384c2e07 Fixed buggy RSaveXPM() in wraster library. 1999-07-25 20:28:30 +00:00
dan
e0423a1276 Fixed a bad Makefile.am 1999-07-17 21:11:55 +00:00
id
5748c8502b Edge attraction. 1999-07-14 22:45:15 +00:00
id
824edac371 Edge attraction. 1999-07-14 14:42:29 +00:00
dan
55f0f37a66 Updated the italian po files. 1999-07-13 12:34:07 +00:00
dan
f6bd8f0b7a Updated some po files. 1999-07-06 23:15:26 +00:00
dan
c865218351 Bug fixes. 1999-07-04 20:43:53 +00:00
dan
6d90da02ef Fixed compilation problem with WS_INDICATOR defined. 1999-07-04 19:58:35 +00:00
dan
62240a0f26 Various bug fixes. 1999-07-03 23:50:05 +00:00
id
caf8ffee27 fix ppl's mail addy. 1999-06-28 20:44:56 +00:00
dan
bb50f8368b Fixed a bug in userdefaults.c, and upgraded to libtool-3.2 1999-06-19 20:01:44 +00:00
id
ced24f3182 fix a small bug relate to modelock. 1999-06-19 00:33:55 +00:00
id
7cc53d5134 Buttons in filepanel. 1999-06-09 20:22:44 +00:00
id
fcc083e51b Pics. 1999-06-06 19:18:42 +00:00
id
f1fff3180f Buttons! 1999-06-06 13:53:19 +00:00
id
b24129831d Hope this fix a crash relate to dematerialize. 1999-06-06 11:55:02 +00:00
id
ec54fa3f38 Selection owning use event's time. 1999-06-06 11:50:30 +00:00
id
d1ad96755c fix a typo bug? 1999-06-06 11:41:36 +00:00
id
c3fca9a0a5 Buttons added. 1999-06-06 11:40:29 +00:00
id
3385847632 New images and new buttons on wmfile. 1999-06-06 11:37:14 +00:00
dan
83062312fd Added BUGS in WINGs directory 1999-06-04 20:22:31 +00:00
dan
b9c1aba415 Fixed some problems in 0.60.0 1999-06-04 20:13:40 +00:00
id
a10885b99d fix 1999-06-03 19:59:23 +00:00
id
667e7de647 *** empty log message *** 1999-06-03 11:09:10 +00:00
id
3c503eac88 Add floppy button. 1999-06-03 10:48:13 +00:00
id
2958e72f1a Logan points this out to me. 1999-06-03 00:49:16 +00:00
id
c5de384f71 *** empty log message *** 1999-06-03 00:42:56 +00:00
id
ba5279276f Delete button in file panel. 1999-06-03 00:24:03 +00:00
id
76ad1726a0 Trashcan update. 1999-06-03 00:13:01 +00:00
dan
7648e92c36 Changes for omnipresent icons in clip (menu entries redone). 1999-06-02 22:31:46 +00:00
kojima
c2dee60f75 fixed some minor bugs, updated korean translation 1999-06-02 20:44:16 +00:00
dan
937f7f5b33 Moved the omnipresent setting from settings panel to clip's menu. 1999-06-02 12:14:27 +00:00
dan
9099fe535e Added russian po file for WPrefs 1999-06-02 09:43:25 +00:00
id
b208eb01b9 Add a trashcan which will be used in filepanel. 1999-06-02 05:06:15 +00:00
kojima
fb6e3c1386 fixed cosmetic bug in moveres, updated Install script 1999-06-01 22:35:21 +00:00
kojima
838a627e0b removed useless file 1999-06-01 22:25:45 +00:00
dan
cf4f0910b7 Updates to omnipresent clip icons. 1999-06-01 14:24:35 +00:00
dan
38bb25a732 Omnipresent appicon mark 1999-06-01 08:47:25 +00:00
kojima
7f36af4fdf updated translations and image files for WINGs, bug fixes in WINGs
font handling, bug fixes in wmaker and wraster
1999-05-31 20:34:00 +00:00
dan
81d1ec430f Fixed a bug in wmsetbg.c 1999-05-31 19:10:38 +00:00
kojima
bb1a700aa9 fixed vertical positioning of text 1999-05-31 01:50:01 +00:00
id
7d7be49dae Title shadow relate. 1999-05-31 01:06:26 +00:00
kojima
029695bcda update for WINGs font interface change 1999-05-31 00:47:10 +00:00
kojima
7c9574b1ea changed WMCreateFont* interface 1999-05-31 00:44:18 +00:00
kojima
2bff75f4f7 fix crash bug in appearance section 1999-05-30 15:35:46 +00:00
kojima
52e674c064 fixed bug 1999-05-30 14:44:00 +00:00
kojima
1c56fc397f fixed compile problems 1999-05-30 14:34:12 +00:00
kojima
c5353da48c fix compilation probs 1999-05-30 14:19:42 +00:00
kojima
f9a04a642f update in configure 1999-05-30 14:14:57 +00:00
kojima
54927f007a fixed cvs messup 1999-05-30 05:10:54 +00:00
kojima
3d5f435be7 fixed cosmetic bug in geom. dpy window for 8bpp
removed --enable-kanji and added MultiByteText option
rewrote font code to use WINGs
made autoraise only work for the active window
fixed compilation problem with OpenWindows and other non-X11R6 systems..
1999-05-30 05:02:55 +00:00
kojima
a498d53fda fix bug with alpha transparent xpm 1999-05-30 04:58:32 +00:00
kojima
fbd9035f3e fix portability bug for non-X11R6 systems 1999-05-30 04:52:05 +00:00
kojima
c8cbc630c4 added a runtime disabling of multibyte text support 1999-05-30 02:23:58 +00:00
kojima
bdd18ccdf0 fixed compilation problem 1999-05-29 22:53:01 +00:00
kojima
57b315f50c fixed compilation prob 1999-05-29 22:48:00 +00:00
kojima
ed7a292482 fixed a typo 1999-05-29 22:40:26 +00:00
kojima
5e4625dafe many bug fixes, finished some delegate code, updated menu file bug from EXEC
to SHEXEC, updated french translations
1999-05-29 21:41:25 +00:00
id
a43f369ec3 XKB lock relate. Allow you to disable language button in advance setting. 1999-05-29 15:45:19 +00:00
id
3b98adc9ae have to decide about this again. 1999-05-29 02:38:00 +00:00
id
17c4c23f22 Add internal notification observer for deselection. 1999-05-29 01:57:30 +00:00
id
a3dd7dc748 Try to fix a crash by removing selection handler from textfield. 1999-05-28 00:56:34 +00:00
id
f039a59a1b Separate bitmap file for modelock button. 1999-05-26 23:19:19 +00:00
id
0ba7ae448f Modelock relate stuffs. 1999-05-26 23:18:34 +00:00
dan
6e97e4cae5 Fixed return of WMGetUDStringForKey to be only a reference, not an allocated
string.
1999-05-26 01:55:54 +00:00
dan
df7998e9e1 Updated the Spanish menu 1999-05-25 20:20:24 +00:00
dan
01b5fe34cc Some enhancements to the look of the clip menu entry text, regarding
single/multiple selected icon(s).
1999-05-25 20:07:36 +00:00
dan
adb74c688c Added WMGetPopUpButtonItemEnabled() and WMGetPopUpButtonEnabled() functions. 1999-05-25 02:15:44 +00:00
id
ec9847d1a3 clean the unuse #define 1999-05-24 22:31:24 +00:00
dan
9ca84c07bb Hmmm. Please check the thing compiles before commiting changes. 1999-05-24 20:04:41 +00:00
id
daaccf6fc9 automatic hide language button if window is not focusable. 1999-05-23 23:48:08 +00:00
id
66eeb83d05 fix a typo. 1999-05-23 19:45:33 +00:00
id
2bce79404d fixes relate modelock. 1999-05-23 19:33:19 +00:00
id
17e920ac4d Fix a crash bug point out by Dmitry Astapov. 1999-05-22 21:50:20 +00:00
id
b3112e2b3c Fixes relate to modelock. 1999-05-22 21:30:35 +00:00
id
c28f3b2c5b Changes relate to modelock. 1999-05-20 23:30:53 +00:00
id
3301950805 Change buttons' position. 1999-05-19 02:24:47 +00:00
id
a5d0648ad5 Fix a crash. 1999-05-19 01:26:19 +00:00
kojima
4ba9b80c98 fixed brothr menu texture update bug 1999-05-19 00:57:36 +00:00
kojima
8fb8355a32 fixed crash bug in apeparance related to color setting
added color list saving in appearance
1999-05-19 00:20:45 +00:00
dan
4df40ab8e0 Chnaged the scroller not to move the knob when touched, until dragged. 1999-05-18 20:52:09 +00:00
id
5a7a706fc4 misc update relates to xdnd. 1999-05-18 20:40:30 +00:00
id
16a5105912 Hopefully fix a crash if user initialize error color value. 1999-05-18 20:04:22 +00:00
id
374143227a Icons update. 1999-05-18 20:00:56 +00:00
dan
b4d4d52d49 Put back order in text field delegate structure, so we won't discuss
useless crap.
1999-05-18 00:16:36 +00:00
dan
35735b2f36 Fixed a crashing bug related to textfield selections, and reordered the
items in the textfield delegate structure to be grouped togheter based
on their meaning.
1999-05-18 00:01:59 +00:00
dan
d9347ea4cf Fixed crashing bugs in color panel, and a bug in wprefs.app 1999-05-17 21:44:30 +00:00
id
351b417f3b update docs. 1999-05-17 20:27:27 +00:00
id
d40250728d xdnd drop support on dock. 1999-05-17 20:21:43 +00:00
id
d6f1c81924 Tabview for path. 1999-05-17 18:19:09 +00:00
dan
37ba5a836f bug fixes. 1999-05-17 16:04:48 +00:00
dan
d95a0af324 Fixed a bug related to omnipresent icons in Clip 1999-05-17 13:04:17 +00:00
kojima
aff8982859 added colorwell updating through colorpanel
added delegate and new functions to tabview
1999-05-17 03:55:35 +00:00
kojima
07e83b45d0 added color editing and title justification to appearance section 1999-05-17 03:54:38 +00:00
dan
b06fb162df Bug fixes related to global icons in Clip. 1999-05-17 01:31:16 +00:00
dan
237fa3ce01 Added WMSetTabViewFont(). 1999-05-16 15:11:13 +00:00
dan
64fcfedd48 Fixed some bugs in browser code, related to delegates when setting title of
browser.
1999-05-16 12:40:47 +00:00
kojima
bedc22384f added notification in colorpanel
colorwell updating with colorpanel change
1999-05-16 07:00:01 +00:00
kojima
59e1504fe7 started color page in appearance section 1999-05-16 06:59:48 +00:00
kojima
905010ce1e added options page in appearance section 1999-05-16 04:54:13 +00:00
kojima
86f9c4dd32 updated icons and layout for appearance section 1999-05-16 02:49:05 +00:00
id
7a1de9dad9 Fix misc bugs. 1999-05-16 02:22:42 +00:00
id
7f6c4d1a73 Textfield to use X's selection. 1999-05-16 01:27:03 +00:00
dan
0380d048b1 Remvoed some redundant definitions after the notification code change. 1999-05-16 00:55:35 +00:00
dan
55d51e546d Some cleanup after the notification removal in textfields. 1999-05-16 00:45:34 +00:00
kojima
da36a4ee96 fixed bug with menu editor in wprefs 1999-05-16 00:30:07 +00:00
kojima
23aac1a87a removed notification posting for didChange when text is changed programmatically 1999-05-16 00:15:03 +00:00
kojima
3896e61326 fixed crash bug with menu eidtor 1999-05-15 22:22:13 +00:00
id
3b68d85428 Clean a little stuff. 1999-05-15 21:47:28 +00:00
dan
ff8138f584 Fixed a bug in Clip's omnipresent icons code. 1999-05-15 20:45:09 +00:00
dan
12ff477910 Synced some Makefile.in's. 1999-05-15 19:28:53 +00:00
kojima
87c48374b7 fixed crash bug 1999-05-15 19:16:12 +00:00
kojima
0607245378 fixed crash bug 1999-05-15 18:17:37 +00:00
kojima
55c9657253 fixed problem wrt typedef that should be included from WUtil.h 1999-05-15 18:00:50 +00:00
kojima
6d74b96ce2 fixed typo errors 1999-05-15 17:52:21 +00:00
kojima
a5e14b4b30 fixed little typo in configure 1999-05-15 17:42:30 +00:00
kojima
dd2d71fc9b started Appearance update in WPrefs
added tabbed view
changed some callbacks to delegate like stuff (textfield and browser)
1999-05-15 17:38:05 +00:00
dan
70a363de7b Added ability to set omnipresent icons in Clip. 1999-05-14 23:49:07 +00:00
kojima
39513b9f35 bug fixes 1999-05-14 04:30:01 +00:00
kojima
a98624ab84 endless loop fix for W_GetSelection when selection is owned by the app itself 1999-05-14 03:08:05 +00:00
kojima
bb0228dae5 fixed bug that caused slow mapping/raising/lowering of large windows 1999-05-08 18:29:58 +00:00
kojima
cec66c4e14 fix buglet 1999-05-07 19:55:02 +00:00
dan
2f178db0b9 Adjusted the list size in WPrfs.app/Paths.c 1999-05-04 23:18:54 +00:00
dan
6fc9e2a2e5 - fixed a bug with setting initial path in browsers.
- made the paths selector in WPrefs.app use the open file panel.
1999-05-04 23:14:47 +00:00
id
0b851ffc3e Window shortcuts will apply to a group of selected windows, too. 1999-05-04 21:14:09 +00:00
id
f8918e85f7 Window shortcuts will apply to a group of selected windows, too. 1999-05-04 21:03:11 +00:00
dan
37e669d1d8 Fixed a bug and cleaned up a bit the color panel code (patch submited by
Alban Hertroys).
1999-05-04 00:05:56 +00:00
dan
b67fc5cad4 Updated some .po files, added man page for wsetfont, and fixed a small bug
in WPrefs.app.
1999-05-02 21:23:10 +00:00
dan
113955d0a8 Added .cvsignore in contrib 1999-05-02 00:06:54 +00:00
dan
590af69c0b Simplified code for XK_ISO_Left_Tab 1999-05-02 00:00:14 +00:00
dan
714e2ef487 Fixed a problem in WINGs related to the return type of XLookupString()
in some cases.
1999-05-01 23:46:27 +00:00
kojima
ef00e3316b update readme info 1999-05-01 23:26:34 +00:00
kojima
1962d931d5 updated menus for SHEXEC 1999-05-01 23:15:43 +00:00
id
b7b8827769 Remove old dirty hack. 1999-05-01 21:13:56 +00:00
id
94a873707c Fix a crash in user menu and a menu map bug. 1999-05-01 20:59:07 +00:00
kojima
c2434e8925 added contrib/ directory, updated WPrefs and wmsetbg for smoothed
backgrounds, added GNUstep info panel, added patch for
saving menu position state
1999-05-01 17:44:43 +00:00
dan
cfef89e920 Updated files for libtool-1.3 1999-05-01 10:24:49 +00:00
kojima
d36d6f9320 plmenu.da update 1999-05-01 00:23:37 +00:00
id
50e27d6315 Dirty hack to fix user menu problem. 1999-04-30 23:57:51 +00:00
kojima
daeb6d67e2 bug fixes in icon placement, attribute inspector, balloon, workspace display
timeout
1999-04-30 23:31:00 +00:00
dan
b13dba1183 Fixed crashing bug in WPrefs.app/Preferences.c 1999-04-30 20:15:55 +00:00
dan
99e67c8ed0 Small bug fix, and updated for some #defines that were removed. 1999-04-30 02:36:33 +00:00
kojima
8f68cfd8cd bug fixes, performance enhancement for image rendering 1999-04-29 23:05:16 +00:00
id
d6f2dd663e Fix user menu path. 1999-04-29 16:14:53 +00:00
id
e8ffdaf8e9 Fix a typo bug. 1999-04-29 14:39:17 +00:00
kojima
e50b7e9ca9 bug fix in wbutton.c, made mouse pointer go invisible when typing in
textfield, added option to Smooth workspaceBack
1999-04-28 23:50:52 +00:00
id
5a156f9131 Try to reduce flicker in text widget. 1999-04-28 22:50:40 +00:00
kojima
aac9a006d0 smoothed scaling 1999-04-28 20:37:39 +00:00
dan
76827c72d1 Made the secure textfield give some feedback about what is happening. 1999-04-27 02:46:55 +00:00
kojima
a205d1f5c2 bug fixes 1999-04-27 01:38:09 +00:00
kojima
d3609d3449 GNOME mouseclickproxy thing fix
added WorkspaceNameDisplayPosition
balloon updates
bug fixes
1999-04-25 21:43:50 +00:00
dan
fe2e0156e0 Added .cvsignore files to repository 1999-04-25 20:21:26 +00:00
dan
98df61be32 Fixed the background image for displaying the workspace name to be taken
from the same place as the name is displaying. It was still taken from the
middle of screen even if the name display place moved to top.
1999-04-25 16:36:07 +00:00
kojima
d3f29988d0 added balloon help 1999-04-25 01:49:46 +00:00
kojima
2c1f4634e3 bug fix for balloons and some other minor things 1999-04-25 01:47:51 +00:00
dan
a0ebbef813 Brought configure script, and some Makefile.in files in sync. 1999-04-24 23:26:57 +00:00
kojima
3d4b4e7a44 fixed little typo in wconfig.h.in 1999-04-24 22:48:49 +00:00
kojima
7f01849758 - made deiconification not automatically focus window in sloppy focus
- fixed crash with DisableMiniwindows and icon pixmap changes
- fixed crash when changing icon of window without WM_CLASS
- added IAmAnnoyingAndDontWantWorkspaceNameDisplay
- added hysteresys for offscreen menu scrollback
- fixed bug with IgnoreFocusClick
- fixed crash with windows with width == 1 (Alban Hertroys
					<dalroi@wit401310.student.utwente.nl>)
- added SHEXEC command
- fixed resizebarback for SHADOW_RESIZEBAR ( jim knoble jmknoble@pobox.com)
1999-04-24 20:08:20 +00:00
id
446c02aa5c Pack motion notify in dematerialize icon. 1999-04-23 19:11:00 +00:00
id
5bdb028648 Packing motion notify to speed the running glass up. 1999-04-23 18:27:45 +00:00
id
1bb45d3466 Fix syntax error in NEWS. 1999-04-23 18:20:13 +00:00
id
0614a8333b Bugs fixes and add KEY_CONTROL_WINDOW_WEIGHT to key move/resize window. 1999-04-23 07:26:13 +00:00
id
a8b7216c31 Add KEY_CONTROL_WINDOW_WEIGHT to keyboard move window code and bugs fixes. 1999-04-23 07:12:01 +00:00
id
553c61ee3b fix a typo 1999-04-22 19:04:40 +00:00
id
0bebc5a792 menu jump back delay 1999-04-22 15:21:29 +00:00
dan
a997825148 Some cleanup in the dock.c code. 1999-04-22 03:33:54 +00:00
dan
dfbc246a3f Fixed a bug with icon position calculation when redocking in clip,
and made libwmfun to be added to distribution with "make dist".
1999-04-22 03:25:30 +00:00
kojima
2a19d45517 bug fixes, faq update, fix of wrong bug fix in actions.c etc 1999-04-21 00:16:13 +00:00
dan
cef3b29d94 Added some fixes from people, and updated Changelog about this. 1999-04-20 20:56:30 +00:00
dan
da4fc6b3a8 Fixed stupid automake dependancies. Grrrr... 1999-04-20 15:47:38 +00:00
dan
5637e33524 Fixed mem leak in wrlib. 1999-04-20 14:45:36 +00:00
dan
070680f72e Updated again the locale files (changed name for Chinese locale). 1999-04-20 10:30:04 +00:00
dan
5391ce4c5d Updated some locate files (slovak and chinese). 1999-04-20 08:18:28 +00:00
dan
33fa831bb0 Redraw the Clip arrows to be slightly larger. 1999-04-19 16:33:28 +00:00
id
95d036c52e better fix. 1999-04-19 13:02:08 +00:00
id
f8d963e036 Fix crash bug in screen.c, hide window when it is --no-clip --no-dock. 1999-04-19 12:27:38 +00:00
dan
c1e7875744 Syncing some files updated after running configure 1999-04-19 00:52:09 +00:00
kojima
bc0b869ba9 fixed bug in texture panel 1999-04-19 00:27:47 +00:00
kojima
df04a0a157 fixed little bug in non-continuous mode for slider 1999-04-19 00:20:13 +00:00
dan
cf6fbf7e13 Fixed some problems with WMGetDefaultsFromPath(). 1999-04-19 00:09:21 +00:00
kojima
2b1dfb439d added some updated po files (korean, chinese) 1999-04-18 22:10:50 +00:00
kojima
2effbfafde various bug fixes 1999-04-18 21:08:00 +00:00
dan
674eb20ec4 SOme fixes, and added WMGetDefaultsFromPath(). 1999-04-18 19:41:42 +00:00
id
a28c4144ac Fix NEWS file, thanks to logan for english. 1999-04-18 10:22:54 +00:00
id
b54a5f65e4 Add NEWS and fix a typo bug in user menu. 1999-04-18 06:07:04 +00:00
kojima
eb8adc46f5 clip arrow bevel 1999-04-18 01:40:43 +00:00
kojima
9eb4f894d0 *** empty log message *** 1999-04-17 23:11:34 +00:00
dan
8bdc78fcd1 fixed Restart() function, and crashing dialog call to this function 1999-04-17 20:25:07 +00:00
kojima
afcbe06363 *** empty log message *** 1999-04-17 19:44:58 +00:00
kojima
b147e8f85c show workspace name when changing workspace 1999-04-17 18:24:23 +00:00
id
57f0f4b245 Change directory for user menus and add global directory for them. 1999-04-17 10:08:13 +00:00
id
416f28248c change mind. 1999-04-17 05:55:31 +00:00
id
5324ab3304 Clean the code. 1999-04-16 20:31:26 +00:00
dan
52917e53de rearranged the crashing dialog panel code. 1999-04-16 20:05:26 +00:00
id
6c22352007 *** empty log message *** 1999-04-16 19:56:08 +00:00
kojima
4b609a4ddc dunno 1999-04-16 02:07:45 +00:00
dan
c98f229d9c Added the crash dialog panel 1999-04-16 01:12:45 +00:00
kojima
e96d9a99ee missing style files 1999-04-15 20:56:46 +00:00
kojima
4cc21af228 style file updates, gradiented clip arrows 1999-04-14 00:22:38 +00:00
dan
fad6a286d8 A few cosmetic fixes. 1999-04-12 18:00:12 +00:00
kojima
ad6c5e0bd8 WPrefs update for ResizebarBack 1999-04-12 04:54:50 +00:00
kojima
da91828129 ResizebarBack option 1999-04-12 02:03:58 +00:00
kojima
3bf0fa92c9 MenuStyle option 1999-04-11 03:01:22 +00:00
dan
072e3002e0 Removed some files that are generated at compile time from .in files 1999-04-11 02:07:07 +00:00
kojima
7e07b7b5b9 *** empty log message *** 1999-04-10 19:32:34 +00:00
kojima
4a473b8ad7 *** empty log message *** 1999-04-10 18:27:21 +00:00
kojima
9df0e16707 new/changelog fix 1999-04-03 03:51:17 +00:00
dan
370c15ad2b Fixed autoconf stuff in libwmfun, and patched wmsetbg to work with dynamically
loadable texture renderer code.
libwmfun was updated from 0.0.0 to 0.0.1
1999-04-03 02:23:05 +00:00
dan
a5500d5cf5 Added libwmfun-0.0.0.tar.gz. Fixed mkpatch. 1999-04-02 22:27:31 +00:00
dan
156501bcb8 Final updates before release. 1999-04-01 17:15:50 +00:00
dan
4cd8da33a7 Fixed some docs I forgot about. 1999-03-30 23:07:46 +00:00
dan
e1001cb0db A few small fixes before 0.52.0 release. 1999-03-30 22:14:17 +00:00
dan
5f8c82969b Some stuff I forgot to clean after modifing the Clip's autocollapse code. 1999-03-21 16:35:48 +00:00
dan
bd190c5739 Fixed Clip regarding auto raise/lower and autocollapse behavior.
Also rewrote that part of code to be much cleaner.
1999-03-21 11:58:18 +00:00
dan
ceb20ee1fd Fixed Clip's autoraise/lower behavior regarding attched icons with their own
displaing window (applets).
1999-03-20 20:40:40 +00:00
kojima
9acdde0042 *** empty log message *** 1999-03-20 02:42:48 +00:00
kojima
e7532d1892 kde 1.1 update 1999-03-20 02:41:23 +00:00
dan
69340d517a Some small fixes. 1999-03-19 22:07:19 +00:00
kojima
dfac16f988 Added clickability on preview box (appearance) to select item to
edit texture for.
1999-03-19 00:48:03 +00:00
kojima
e75050c3f4 Put an indicator for the selected item in appearance section 1999-03-18 20:03:27 +00:00
kojima
09f8126a38 Bug fixed in wbrowser 1999-03-18 19:53:01 +00:00
kojima
f214ef92d2 Updated/fixed version of colorpanel 1999-03-18 19:48:19 +00:00
kojima
1ba54a5199 Texture plugin update 1999-03-18 05:41:00 +00:00
kojima
9a3d1fef45 KDE enhancements, menu appearance enhancement 1999-03-18 04:26:47 +00:00
kojima
42b8948743 Little compilation bug fix (related to KDE) 1999-03-18 01:36:44 +00:00
kojima
ea55bc5e3f Fix some bugs, DisableMiniwindows, _KWM_WIN_ICON_GEOMETRY.. 1999-03-18 01:11:18 +00:00
kojima
67a008937f configure.in fix, WPrefs updates 1999-03-17 02:00:13 +00:00
kojima
dad0e04829 er.. WPrefs Appearance section update 1999-03-17 01:20:29 +00:00
dan
d8c169c0a8 Removed themes from the main tree, and made them a separate package. 1999-03-17 01:14:35 +00:00
dan
cd35b67a6b Small fix for an endless loop in findfile.c:wfindfileinarray() 1999-03-17 00:59:36 +00:00
kojima
4eda694989 More WPrefs updates (should I commit changes this often?) 1999-03-16 12:17:14 +00:00
kojima
5298849122 WPrefs appearance stuff update (shows preview) 1999-03-16 11:27:01 +00:00
kojima
6d7e5a338d Changed initial workspace specification in window attributes panel. 1999-03-16 03:25:10 +00:00
kojima
0477777415 Fixed stupid bug in setstyle.c 1999-03-16 02:11:06 +00:00
dan
4b4e4cf56a Some small fix to which files should be in cvs tree. 1999-03-16 00:22:59 +00:00
kojima
d0166d199f Fix stupid bug in wiuthdrawal of window, event.c 1999-03-16 00:16:29 +00:00
kojima
7f9f88940d Initial update from my source tree. For 0.52.0 1999-03-15 23:41:22 +00:00
dan
c56756dc73 Update for 0.52.0. This is a test version, which brings the Appearance
section to WPrefs for testing purposes.
1999-03-14 22:35:50 +00:00
dan
ea5d3bcde3 Some fixes over 0.51.2-pre2, in WINGs, wwindow.c, and FAQ 1999-03-10 15:47:10 +00:00
dan
1160cbdb9d Update for a missed file in 0.51.2-pre2 1999-03-09 16:03:24 +00:00
dan
cc81785b82 Yet another try to get 0.51.2-pre2 in cvs 1999-03-09 15:46:49 +00:00
dan
088c0ac230 Update for 0.51.2-pre2 1999-03-09 14:58:01 +00:00
dan
60980735fe syncing with latst changes, because cvs will be moved 1999-02-23 14:46:39 +00:00
dan
e7495baff7 0.51.1 pre snapshot. Be careful, it may be buggy. It fixes some bugs though. 1999-02-17 11:06:40 +00:00
dan
931a37b124 Latest fixes for released 0.51.0 1999-01-29 08:11:17 +00:00
dan
d694d6fe1c Removing libPropList from the main tree. From now on is on the gnome ftp
site, and in the gnome cvs.
--
Dan
1999-01-26 14:46:42 +00:00
dan
75a7f74723 Small fixes for 0.51.0, and a missing file. 1999-01-25 21:17:45 +00:00
dan
416e3a82be Update for 0.51.0 1999-01-25 19:06:50 +00:00
dan
3aeb1eb052 Oops... I still forgot to add some files in WindowMaker submenu.
Here they go.
1999-01-11 12:39:35 +00:00
dan
00e3bec101 Some updates I forgot about (adding some new files, and removing obsoleted
ones).
1999-01-11 12:36:47 +00:00
dan
cb320b2fc3 Update to Window Maker 0.50.2 1999-01-11 12:28:12 +00:00
dan
a37bb3aed5 New menu file ;) 1999-01-07 16:29:48 +00:00
dan
64d136789c Latest fixes, before releasing 0.50.0 1999-01-07 16:22:35 +00:00
dan
b5e9c6f9ee Some bug fixes to 0.50.0 before release 1999-01-07 12:31:05 +00:00
dan
0261c32636 Code update for Window Maker version 0.50.0
Read changes in ChangeLog and NEWS
1999-01-06 15:22:33 +00:00
dan
16698efd45 Fixed a recursive creation directory bug in wmaker.inst 1998-12-03 13:32:28 +00:00
dan
abb778ab53 Latest adds before release of 0.20.3 1998-12-03 11:38:17 +00:00
dan
345d980be3 Window Maker 0.20.3 1998-11-27 12:26:46 +00:00
dan
9007a6575d This update includes the 0.20.3pre3 code 1998-11-23 11:32:19 +00:00
dan
59eb947539 Bug fixes for 0.20.3 pre-release 2 1998-11-03 12:53:26 +00:00
dan
abde3e0c4e Small bug fixes over 0.20.2 -Dan 1998-10-23 17:07:08 +00:00
dan
9af1c6c415 Updating to version 0.20.2
Many bug fixes.
1998-10-21 14:43:47 +00:00
813 changed files with 200675 additions and 60917 deletions

8
.cvsignore Normal file
View File

@@ -0,0 +1,8 @@
Makefile Makefile.in
aclocal.m4
configure config.log config.cache config.guess config.status config.sub
libtool ltconfig ltmain.sh
.psrc .inslog2 tca.map tca.log
*.rpt
update update-autoconf
WindowMaker*.tar.gz

6
.cvsnotify Normal file
View File

@@ -0,0 +1,6 @@
#
# You can add here extra email addresses (one per line) where notifications
# should be sent on cvs commit.
# This is easier than to modify CVSROOT/loginfo to add extra addresses there.
# Lines that start with # or empty lines are ignored.
#

101
AUTHORS
View File

@@ -2,7 +2,7 @@ Information about locale translators is at src/po/README and
Library/WindowMaker/README
Many thanks to the following people who have contributed
patches, bug fixes and other stuff for WindowMaker:
patches, bug fixes and other stuff for Window Maker:
ABE Shige <sabe@ibm.net>
I18N support, diagonal and vertical gradient, cosmetic additions to
@@ -13,9 +13,12 @@ restart, dock bug fixes
Andrea Arcangeli <arcangeli@mbox.queen.it>
Fix for cascade window placement
Peter Bentley <peter.bentley@nomura.co.uk>
Dmitry Astapov <adept@dimail.alpline.mao.kiev.ua>
Fix and some additions on XKB lock language status.
Peter Bentley <pete@sorted.org>
fixed WM_STATE handling bug, fixed some memory leaks, made application menus
be mapped near the windows for non-click-to-focus modes.
be mapped near the windows for non-click-to-focus modes, timer bug
Ulf Betlehem <flu@iki.fi>
Window resize with Meta-Click3, fixed OpaqueMove to send only 1 synth.
@@ -24,11 +27,20 @@ ConfigureNotify
Olly Betts <olly@muscat.co.uk>
shaded window indication in window list
Tudor Bosman <tudorb@caltech.edu>
autoraise bugfix
Rob Clark <rclark@turing.cs.hmc.edu>
Text input field, 15bpp support
George Clernon <clernong@tinet.ie>
bug fix in browser widget
Omar Cornut / Zoop <cornut@capway.com>
SteelBlueSilk theme
Sylvain CORRE <sylvain.corre@wanadoo.fr>
bug fix for MkLinux/PPC, bug fix for cpixmap in wmsetbg
bug fix for MkLinux/PPC
Frederic Devernay <devernay@istar.fr>
dock fix for openwindows, made asclock be friendlier with colorcell impaired
@@ -53,36 +65,54 @@ Documentation help, autoconf cleanup
Mark 'segfault' Guzman <root@lsd.pbx.org>
Various bugfixes
Ullrich Hafner <hafner@informatik.uni-wuerzburg.de>
Better detection of gfx libraries
Ullrich Hafner <hafner@bigfoot.de>
Better detection of gfx libraries, added IconTitleColor/IconTitleBack
Matthew Hawkins <matt@mh.dropbear.id.au>
former temporary project maintainer
Greg Hayes <sdc@choice.net>
Twisted miniaturization animation
Alban Hertroys <dalroi@wit401310.student.utwente.nl>
WINGs color panel
HIDEKI Fujimoto <hideki70@osk2.threewebnet.or.jp>
FreeBSD portability, icon arrangement fixes, dock initialization bug fix,
some I18N related fixes
Pascal Hofstee <daeron@wit401305.student.utwente.nl>
WINGs bug fixes, WINGs color panel
Robert A. Holak <panthar@tradeservices.com>
bug fix
Michael Hokenson <logan@dct.com>
wkde2menu.pl script
IKARASHI Akira <ikarashi@itlb.te.noda.sut.ac.jp>
Workspace change bug fix
Sudish Joseph <sj@eng.mindspring.net>
Modifier binding fix and other bug fixes
Luke Kendall <luke@research.canon.com.au>
menu format converter, various enhancements to wxcopy and wxpaste
Bradley M Keryan <keryan@andrew.cmu.edu>
EMACS/keypad like cursor movement for WINGs textfield
Jim Knoble <jmknoble@pobox.com>
made autoarrange icons a runtime option, SHADOW_RESIZEBAR c-time option,
no workspace switch to the same workspace, dashed icon selection,
misclellaneous bug fixes
misclellaneous bug fixes, definable cursors, --no-polling command line option.
Alfredo K. Kojima <kojima@inf.ufrgs.br>
The JED Text Editor <xjed@windowmaker.org>
Project maintainer
Alfredo K. Kojima <kojima@windowmaker.org>
The guy who types random keys to feed JED with the necessary entropy
Jay Kominek <jkominek@xtn.net>
smart and random placement
@@ -92,20 +122,20 @@ Move/resize code fixes, button press/release fix
Ryan Land <rland@bc1.com>
workspace "layers"
Largo <largo@gnu.net>
wm.gnu.net maintainer, FAQ maintainer
Largo <largo@current.nu>
wm.current.nu maintainer, FAQ co-maintainer
Stuart Luppescu <s-luppescu@uchicago.edu>
Documentation help
Marcelo E. Magallon <mmagallo@efis.ucr.ac.cr>
CPP search path improvement, man pages
CPP search path improvement, man pages, bug fixes
Tim Malone <mrgone@eskimo.com>
bug fix
bug fix, jpeg bug fix
MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp>
I18N bug fixes and japanese locale
I18N bug fixes and japanese locale, wsetfont script
Brian Alexander Martin <brian@goober.wireless.ucsc.edu>
PIPE_MENU
@@ -116,13 +146,13 @@ Andrea Mistrali <andre@ulmo.aleph.it>
Jeff Meininger <jeffm@boxybutgood.com>
Fix for unassociated alpha tiff
Dan Pascu <dan@services.iiruc.ro>
Craig Nellist <crn@ozemail.com.au>
selection in textfield
Dan Pascu <dan@windowmaker.org>
dock ghost (superfluous mode) fix, enhancement for scrollable menus,
clip, numerous other stuff, project maintainer
Kenneth W. Persinger Jr. <Kenn_Persinger@sector7.com>
tcl/tk dockit
Biagio Pippa <1993s017@educ.disi.unige.it>
fixed miniaturization with transient window
@@ -134,7 +164,11 @@ Initial code for clip's collapse feature.
Ture Pelsson <ture@lysator.liu.se>
various portability fixes, replaced busy wait with select() in event
handling code, fixed problem with some misbehaved kids after a fork().
handling code, fixed problem with some misbehaved kids after a fork(),
some other bug fixes, support for poll() in event handling code
Toby Sargeant <?>
menu format converter
Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
SCO portability, german locale, autoconf enhancements
@@ -145,8 +179,14 @@ REDUCE_APPICON/single-icon
Chong Shang Shan <chongsha@sps.nus.edu.sg>
flipping iconification animation
Daniel Skarda <0rfelyus@atrey.karlin.mff.cuni.cz>
SGI "black dialogs" bug fix
Paul D. Smith <psmith@BayNetworks.COM>
SunOS portability, configure fixes
Phillip Smith <teknix@alloy.net>
FTP and WWW site provider/maintainer
FTP, WWW, mailing list site provider/maintainer (Net logistics)
Lauri Tarkkala <ltarkkal@cs.hut.fi>
SIGHUP unblock bug fix
@@ -155,10 +195,19 @@ Sam Varner <varner@nmr.physics.wm.edu>
many fixes and enhancements for move, resize and window placement code.
Marco van Hylckama Vlieg <fatal@global.uibk.ac.at>
house icon for WINGs file dialogs, defaullAppIcon and Clip xpm icon
house icon for WINGs file dialogs, defaultAppIcon and Clip xpm tchX.tiff
Plus the following icons:
DefaultAppIcon.tiff GNUterm.tiff clip2.tiff defaultterm.tiff draw.tiff
linuxterm.tiff mixer.tiff notepad.tiff pdf.tiff ps.tiff real.tiff sgiterm.tiff
sound.tiff staroffice2.tiff timer.tiff wilber.tiff write.tiff xdvi.tiff
xv.tiff
David Wang <dwang@cisco.com>
edge resistance
edge resistance, 8bpp balloon bug fix, other 8bpp related fixes
Franck Wolff <frawolff@club-internet.fr>
various fixes/enhancements to WINGs
Yoav Yerushalmi <yoav@mit.edu>
Fixed -visualid for screens that can do multiple depths. Another fix in
@@ -167,11 +216,17 @@ libproplist. Chooses best depth in screen.
FRBall <frb@umr.edu>
dgradient fix
"]d" <mhz@gpf.or.th>
Window list menu miniaturized/hidden hints
"]d" <id@windowmaker.org>
Window list menu miniaturized/hidden hints, XDE support, XKB lock
language status, WINGs enhancements, bug fixes, window commands menu
enhancement, window move/resize by keyboard. GNUstepGlow.tiff icon,
WINGs color panel, Appearance section icon(s)
Trae Mc Combs <x@themes.org>
BlueWaves.jpeg background image in BlueWaves theme.
And a special thanks to Martin Eskildsen for giving me his
copy of NEXTSTEP :-)

21
BUGFORM
View File

@@ -3,10 +3,12 @@
---------------------------
If you find a bug please fill this form and send it to
developers@windowmaker.org
You can also report a bug in the WWW bug tracker at
http://windowmaker.org/cgi-bin/bugs
If you find a bug please fill this form and send it to
developers@windowmaker.org Please, USE THIS FORM!!!
You can also report a bug in the WWW bug tracker at
http://windowmaker.org/cgi-bin/bugs or by sending this report
to bugs@windowmaker.org
0. Before reporting this bug I already:
@@ -32,10 +34,11 @@ http://windowmaker.org/cgi-bin/bugs
4. Configure time options you specified:
[ ] --enable-kanji
[ ] --disable-shape
[ ] --disable-xpm
[ ] --disable-tiff
[ ] --disable-png
[ ] --enable-single-icon
[ ] --enable-kde
[ ] --enable-gnome
[ ] --enable-openlook
[ ] --enable-modelock
[ ] Others: .......................
@@ -68,4 +71,8 @@ X Server Vendor: ...................... Color Depth: .................
WindowMaker Version (run "wmaker -version"): .........................
11. backtrace if the bug made Window Maker crash. PLEASE SEND THE
BACKTRACE. Your bug report might be of not much use without one.
strace/truss outputs are usually not usefull for crashes, so you can
skip it. The README file has instructions to make one.

26
BUGS
View File

@@ -1,10 +1,20 @@
- the app menu does not update after a style/theme change without restart.
- the animation of shade puts ImageMagick/display in a weird state
- during startup, transient windows should be miniaturized with their owners
not in their own icons
- shaped windows don't resize very well
- wmaker will not stop managing a screen even if another window manager
requests that, through the ICCCM 2.0 manager selection stuff
- stacking code is buggy (or XFree is buggy)
- WINGs has problems in some platforms (SGI, Sun etc.) Anyone on these
systems want to fix it?
- after restart focus is losed or switched to another window. May be related
to the one above.
- save session doesnt work on some platforms (Alpha and Sparc)
- GNUSTEP_WM_ATTR in WINGs has problems on Alpha boxes
- texture pixmaps are being incorrectly freed somewhere. Either
fix bug (to support broken MetroX servers) or remove all useless references
to the Pixmap (to save memory and drop bug compatibility).
- host information is not saved/honored by the dock or save session stuff.
It should at least check if the host is the local machine and only save it
in the session/allow docking it if yes.
- the SHELL environment variable support in the apps menu was removed
because of a problem with tcsh. If ~/.tcshrc contains "stty erase ^H",
it will block and the cmd will not be executed.
- mouse grab being done in client window (in wWindowResetMouseGrabs())
instead of the frame window. If grab is done in frame, titlebar buttons
dont work well
- mysterious mess in dock icons (specially netscape)

91
COPYING.OPL Normal file
View File

@@ -0,0 +1,91 @@
OpenContent License (OPL)
Version 1.0, July 14, 1998.
This document outlines the principles underlying the OpenContent
(OC) movement and may be redistributed provided it remains
unaltered. For legal purposes, this document is the license under
which OpenContent is made available for use.
The original version of this document may be found at
http://www.opencontent.org/opl.shtml
LICENSE
Terms and Conditions for Copying, Distributing, and Modifying
Items other than copying, distributing, and modifying the Content
with which this license was distributed (such as using, etc.) are
outside the scope of this license.
1. You may copy and distribute exact replicas of the OpenContent
(OC) as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any
warranty; and give any other recipients of the OC a copy of this
License along with the OC. You may at your option charge a fee for
the media and/or handling involved in creating a unique copy of the
OC for use offline, you may at your option offer instructional
support for the OC in exchange for a fee, or you may at your option
offer warranty in exchange for a fee. You may not charge a fee for
the OC itself. You may not charge a fee for the sole service of
providing access to and/or use of the OC via a network (e.g. the
Internet), whether it be via the world wide web, FTP, or any other
method.
2. You may modify your copy or copies of the OpenContent or any
portion of it, thus forming works based on the Content, and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified content to carry prominent notices
stating that you changed it, the exact nature and content of the
changes, and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the OC or any part
thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License, unless otherwise permitted
under applicable Fair Use law.
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the OC, and
can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work
based on the OC, the distribution of the whole must be on the terms
of this License, whose permissions for other licensees extend to
the entire whole, and thus to each and every part regardless of who
wrote it. Exceptions are made to this requirement to release
modified works free of charge under this license only in compliance
with Fair Use law where applicable.
3. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to copy,
distribute or modify the OC. These actions are prohibited by law if
you do not accept this License. Therefore, by distributing or
translating the OC, or by deriving works herefrom, you indicate
your acceptance of this License to do so, and all its terms and
conditions for copying, distributing or translating the OC.
NO WARRANTY
4. BECAUSE THE OPENCONTENT (OC) IS LICENSED FREE OF CHARGE, THERE
IS NO WARRANTY FOR THE OC, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
AND/OR OTHER PARTIES PROVIDE THE OC "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE ENTIRE RISK OF USE OF THE OC IS WITH YOU.
SHOULD THE OC PROVE FAULTY, INACCURATE, OR OTHERWISE UNACCEPTABLE
YOU ASSUME THE COST OF ALL NECESSARY REPAIR OR CORRECTION.
5. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
MIRROR AND/OR REDISTRIBUTE THE OC AS PERMITTED ABOVE, BE LIABLE TO
YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
THE OC, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

54
COPYING.WTFPL Normal file
View File

@@ -0,0 +1,54 @@
The following artwork were created by Banlu Kemiyatorn and
are distributed through the license in this file:
GNUstepGlow.tiff
GNUstepGlow.xpm
Magnify.tiff
Magnify.xpm
Terminal.tiff
Terminal.xpm
TerminalGNUstep.tiff
TerminalGNUstep.xpm
TerminalLinux.tiff
TerminalLinux.xpm
tiff/msty1.tiff
tiff/msty2.tiff
tiff/msty3.tiff
xpm/msty1.xpm
xpm/msty2.xpm
xpm/msty3.xpm
WPrefs.tiff
WPrefs.xpm
tiff/tdel.tiff
tiff/tedit.tiff
tiff/textr.tiff
tiff/tnew.tiff
xpm/tdel.xpm
xpm/tedit.xpm
xpm/textr.xpm
xpm/tnew.xpm
inside Resources/Images.tiff "the little house", "the trash can",
"the folder", "the floppies"
Ear.png
Ftp.png
ICQ.png
Jabber.png
Mozilla.png
Pen.png
Pencil.png
Shell.png
Speaker.png
XChat.png
do What The Fuck you want to Public License
Version 1.0, March 2000
Copyright (C) 2000 Banlu Kemiyatorn (]d).
136 Nives 7 Jangwattana 14 Laksi Bangkok
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Ok, the purpose of this license is simple
and you just
DO WHAT THE FUCK YOU WANT TO.

838
ChangeLog
View File

@@ -1,3 +1,840 @@
Changes since version 0.80.0:
.............................
- Fixed a bug that crashed wmaker when closing a window if multiple screens
were managed by wmaker (Valery Kotchiev <aggregator@nospam.dk>)
- Fixed a problem that crashed wmaker when trying to read an unexisting
WMState.<number> file on multihead system.
- Fixed problem with keyboard shortcuts executed an every screen for
multihead systems.
- Updated traditional chinese translations
- Fixed buglet in non-caching rootmenu option
("John H. Robinson, IV" <jhriv@ucsd.edu>)
- Added Malay translation
- Fixed problem with kcalc not having a miniaturize button.
- Added "Hide Others" to the window menu.
- Fixed text in info panel for multibyte (Seiichi SATO <ssato@sh.rim.or.jp>)
- Separated the font caches for normal fonts and fontsets in WINGs (they can
have the same names and collide in the cache giving unwanted results)
- Fixed Legal Panel not to display rectangles in place of new lines.
- Fixed problem with losing focus when changing to an empty workspace and back.
- Fixed another focus related problem when changing workspaces.
- Fixed problem with saving session when shared appicon is enabled (not
all instances were saved in the session, only one per shared appicon)
- Added support for the ukrainian language in wsetfont
(Bohdan Vlasyuk <bohdan@bodq.vstu.vinnica.ua>)
- Fixed a bug that crashed Window Maker when setting the "Emulate AppIcon"
option for a window using the window Inspector.
- Let XRender transparent window be see-through to desktop
- Added Greek (el) language pixmap (Michalis Kabrianis <Michalis@bigfoot.com>)
- Fixes icons being reduced twice when icon size != 64x64
Eduardo Pereira Habkost <ehabkost@conectiva.com.br>
- Fixed a bug that crashed wmaker when selecting the "Start alternate window
manager" option in the crashing dialog panel.
- Window Maker will now use the WINDOWMAKER_ALT_WM environment variable (if
it is defined) to overwrite the default hardcoded fallback window manager.
- Fixed marks for menu entries to be grayed as the text for disabled entries.
- Fixed Clip's "Autoraise" option to be marked as disabled when the
"Keep on Top" option is active.
- Added ability to browse for files/directories in the WPrefs menu editor.
- Added Czech translations of documentation (Jiri Hnidek <Jiri.Hnidek@vslib.cz>)
- Fixed segfault with incomplete WM_CLASS specifications.
- Fixed a bug about arranging subviews in a WMBox after removing a subview
and a memleak occuring in the same situation.
- Fixed a bug in wdread
- Fixed bug with windows that have WM_HINTS.take_focus = False. These windows
will not receive focus at all.
- Fixed a buffer overflow in winmenu.c
Changes since version 0.70.0:
.............................
- Disabled window birth animation by default (while it was ok with normal
windows, it was very annoying with menus editing in WPrefs.app)
- Added ability to shade/unshade a window using the mouse wheel.
- Fixed compilation for systems that required -lintl for WINGs
(Jim Knoble <jmknoble@pobox.com>)
- Removed redundant include/lib paths from the get-*-flags scripts
- Updated slovak .po files (Jan Tomka <judas@linux.sk>)
- Added "Save workspace state" switch button on the exit confirmation panel
(based on a patch sent by Jan Tomka <judas@linux.sk>)
- Fixed WPrefs crash when clicking on the menu editor to keep the current menu
(Alexey Voinov <voins@voins.program.ru>)
- Added patch to fix some gnome issues (Les Schaffer <schaffer@optonline.net>)
- SIGTERM is now handled and saves the internal state before exiting (like
SIGHUP and SIGINT already do). Now a "kill wmaker_pid" will exit cleanly
saving dock/clip/session information on exit.
- Added an internal strcasecmp() to WINGs (only on systems where's not present)
- Deminiaturizing a window that is also shaded, will perform an unshade too.
(Note that this only applies to deminiaturizing shaded windows. Unhiding
an application will keep the shaded/unshaded state of windows.)
- Removed compile time option for definable cursors and made them available by
default.
- Mapping a new window that belongs to a running application that is hidden,
will unhide the application.
- Added || pipe menu for generating non-cached menus
- Removed the collapse appicons thing.
- Added real appicon sharing (apps of the same kind will have a single shared
appicon).
- Fixed user and global defaults domain merging to preserve values present in
global but not in user, in sub-dictionaries.
- Made dock/clip steal appicons of applications that were started from a
shell/xterm or from the main menu, if there is a docked appicon of that
class that is not running at the time the app is launched.
- Added animation to show that the appicon was stolen by the dock (the way
NEXTSTEP did - map an appicon as it normally would have been, then slide it
to the position the docked appicon is).
- Updated the animation constants for scrolling/sliding/shading to better
adapt to newer/faster machines. Also used wusleep(10) when the delay was 0
to get rid of the jerky animation when there was no delay.
- Fixed bug with Unhide mapping windows from other workspaces.
- keyboard shortcuts are active during mouse window drag
- Saving a domain file will first strip all entries that are also present in
the global domain as well and are exactly the same. This fixes a bug where
settings from the global domain file were merged in the user domain file
and further changes in the global domain file for those merged values was
ignored making a system admin unable to set global defaults for all users
using the global domains.
- Fixed bug with improper setting of root/titlebar cursor (definable cursors).
Changes since version 0.65.1:
.............................
- fixed crash when saving empty menu item in WPrefs
- Fixed some more bash specific constructs in wsetfont.
(Marcelo E. Magallon <marcelo.magallon@bigfoot.com>)
- fixed crash with broken apps that set null WM_CLASS
- fixed crash when with gnome panel and multi-screens, some menu
updates and applied various other patches from
(Crutcher Dunnavant <crutcher@redhat.com>)
- po file fixes (Crutcher Dunnavant <crutcher@redhat.com>)
- replaced I18N_MB with I18N in one place in src/wconfig.h.in
- fixed default clip title font in WindowMaker.in
- fixed some locale related problems (Yukihiro Nakai <ynakai@redhat.com>)
- fixed a bug in RCombineAreaWithOpaqueness() (Brad <lists@anomie.yi.org>)
- added spanish INSTALL file (Efrain Maximiliano Palermo <max_drake2001@yahoo.com.ar>)
- updated Finnish pots (Tomi Kajala <tomi@iki.fi>)
- copy/paste launching in Dock
- fixed switch to wrong workspace bug (Masashi Shimbo <shimbo@cis.ibaraki.ac.jp>)
- added snprintf and removed XConvertCase usage for portability
- added wcopy/wpaste scripts from (<luke@research.canon.com.au>)
- added Xinerama support: see details in NEWS
- fixed artifact pattern left in TrueColor dithering code (visible with
tiled gradients)
- fixed bug in positioning of window list menu when opened by kbd
- internal code clean-up with notifications for window state change and other
stuff
- removed the libPropList dependancy by adding property list handling
code to WINGs. This code is not only better integrated with the other
WINGs data structures, but it's also more robust. Also a backward
compatibility header file is provided which maps old libPropList
function names to the new WINGs based proplist names allowing old code
to be linked to WINGs with minimal changes. For details on how to use
the compat mode, read the comments on top of WINGs/WINGs/proplist-compat.h
More details about this can be found in WINGs/ChangeLog and WINGs/NEWS.
Say bye, bye libPropList =)
- rewrote all Window Maker code to use the new WINGs based proplist functions.
- fixed a few compilation warnings and a problem caused by an uninitialized
variable.
Changes since version 0.65.0:
.............................
- removed FocusFollowMouse from wmaker and WPrefs
- fixed problem with alpha images showing a blue tint on big endian machines
- fixed problem with WINGs based apps exiting with a "X_RotateProperties"
related error when text was selected in a textfiled (including WPrefs.app
and Window Maker itself).
- fixed bug with maximization of windows with fixed resize increments
- added None geometry display type
- fixed window enumeration bug
- removed GNUisms from wsetfont (Marcelo E. Magallon <marcelo.magallon@bigfoot.com>, Masahide -mac- NODA <mac@clave.gr.jp>)
- added slovakian translations from (tomka@oalevice.sk)
- added WINGs i18n patch from tomka@oalevice.sk
- fixed wmsetbg.c to work in servers capable of multiple depths (overlay)
- added HMaximizeKey (Ruda Moura <ruda@conectiva.com.br>)
- fixed bad SIGPIPE handling setup across forks (Philippe Troin <phil@fifi.org>)
- added workaround for bug in locale handling on font set creation (Seiichi SATO <sato@cvs-net.co.jp>)
- Fixed some non-portable shell constructs used in installed scripts
(Johnny C. Lam <lamj@stat.cmu.edu>)
- Fixed crash with long titles in the window list menu (buffer overflow)
(Alban Hertroys <dalroi@wit401310.student.utwente.nl>, reported by
Robert Marshall <robert@chezmarshall.freeserve.co.uk>)
- Replaced almost all sprintf() calls with snprintf()
- fixed crash when removing menu entry for Window List or Workspace submenu
- added WINDOW_BIRTH_ZOOM2 (Éric Tremblay <delt@razorback.yi.org>)
Changes since version 0.64.0:
.............................
- fix with gnome hints stuff, related to tasklist/bar
- ripped off single appicon stuff
- added better appicon handling of apps of the same type
- applied patch for wkdemenu (Malcolm Cowe <malk@bruhaha.co.uk>)
- added WINDOWS_MENU submenu type for root menu (Bastien Nocera <hadess@hadess.net>)
- added kbd shortcuts for icon chooser
- use Hermes in wrlib
- removed MOUSE_WS_WHEEL #defines
- fixed bug with multibyte text on libc5 systems (Osamu Ajiki <osam-a@astroarts.co.jp>)
- fixed race conditions on signal handlers
- SIGINT will gently exit, SIGTERM will not be handled
- When Window Maker calls wmsetbg to set the background, it will consider the
value of the DisableDithering option and pass the right switch to wmsetbg.
- fixed a memleak in the dialog panels.
- made "Keep on Top" in the dock/clip menu a checked menu entry. It's _much_
easier to work with it this way.
- Fixed problem with GNOME apps that have windows which need to stay on the
desktop level.
- Fixed incorrect parsing of display and screen number from $DISPLAY.
- Organized the inspector panel a bit better.
- Replaced bags with arrays wherever appropriate. This will improve
performance a bit.
- Made the Gnome tasklist skip the windows with the "Skip window list" flag
enabled. (Bastien Nocera <hadess@hadess.net>)
- Fixed crashing bug when name and class were empty for a docked app.
- Removed MIN() and MAX() macros and replaced them with WMIN() and WMAX() from
WINGs.
- Added a hint that Window Maker crashed, to allow windows to be placed
correctly after a crash situation.
- Added a hint that Window Maker crashed, to allow windows to be placed
in their correct previous positions after a crash situation and also to
preserve their state before the crash (minimized, shaded, hidden, ...)
- Fixed wrong mapping position of the "Docked Applications Panel" for some
icons.
- Smoother animation for the smiley =)
- Added retain/release mechanism for RImages. RDestroyImage() has become
obsolete. More about this can be found in wrlib/Changelog and wrlib/NEWS.
- Small API change in WINGs to allow images with alpha blending set as the
application icons be shown correctly. More about this in WINGs/Changelog
and WINGs/NEWS.
- Made images with alpha blending be shown correctly in the panels and the
icon chooser.
- The icon image set to be shown in panels ("Logo.WMPanel") will be
automatically updated if its entry in WMWindowAttributes changes (without
a need to restart as until now).
- Fixed a bug in the icon chooser dialog that made the selected icon look
wrong if it had alpha blending.
- Removed the following 3 options from configuration: SelectWindowsMouseButton,
WindowListMouseButton and ApplicationMenuMouseButton.
- Added 4 options to the configuration file for binding workspace actions to
mouse buttons: MouseLeftButtonAction, MouseMiddleButtonAction,
MouseRightButtonAction and MouseWheelAction. They replace the above 3
removed options, but use a different semantic. More in NEWS.
- client supplied icons that were saved by Window Maker in the directory
~/GNUstep/.AppInfo/WindowMaker/ will be recreated if missing when the
application starts.
- fixed a small memleak when the client supplied icon was extracted and saved.
Changes since version 0.63.1:
.............................
- fixed messup in get-{wings,wutil,wraster}-flags
- fixed #wmdatadir# substitution in wmaker.inst
(Seiichi SATO <sato@cvs-net.co.jp>)
- Removed spurious focus disabling for GNUstep applications - but retain
code that lets GNUstep apps control their window titlebar.
(Richard Frith-Macdonald <rfm@gnu.org>)
- Fixed broken panels.
- Renamed se.po to sv.po
- New version of wkdemenu.pl (from Malcolm Cowe <malk@bruhaha.co.uk>)
- new updated Slovak translations (Jan Tomka/judas@hell <tomka@oalevice.sk>)
- integrated the 'no polling' patch from Jim Knoble <jmknoble@jmknoble.cx>.
- new wsetfont script (Anton Zinoviev <zinoviev@debian.org>)
- lots of i18n fixes (Jan Tomka/judas@hell <tomka@oalevice.sk>)
- window levels changed to match GNUstep <rfm@gnu.org> ... src/GNUstep.h
src/WindowMaker.h src/window.c wmlib/WMaker.h WINGs/WINGs/WINGs.h
Changes since version 0.63.0:
.............................
- fixed compile prob with SGI compiler
- decreased nice() value in wmsetbg
- applied gnome panel not-covering patch from (Bastien Nocera <hadess@hadess.net>)
- added item copy to WPrefs menu editor
- added locale selection code for menu in wmaker.inst (Eliphas Levy Theodoro <eliphas@conectiva.com.br>)
- fixed bug in built-in xpm support (Alessandro Strada <a.strada@libero.it>)
- removed plugin support
- fixed a crash bug in WPrefs menu editor
- added es and pt potfiles from conectiva/eliphas
- added updated galician potfile (Jesus Bravo Alvarez <jba@pobox.com>)
- added update hungarian potfiles (HORVATH Szabolcs <horvaths@inf.elte.hu>)
- added updated single-click patch from John Morrissey <jwm@horde.net>
- added updated danish translations (Birger Langkjer <birger.langkjer@image.dk>)
- fixed WindozeCycling config in WPrefs
- fixed circulate raise withour WindozeCycling
Changes since version 0.62.1:
.............................
- added blackbox style igradient (interwoven)
- added wmagnify utility
- changed behaviour of control/shift double click on titlebar for maximize
- updated getstyle to account for extendspace options
- fixed weird color bug in jpeg loader
(Alban Hertroys <dalroi@wit401310.student.utwente.nl>)
- improved and simplified fonts configuration for multibyte languages
(Tomohiro KUBOTA <kubota@debian.or.jp>)
- cleaned ParseCommand() and renamed to TokenizeString()
- rewrote menu editor in WPrefs
- added definable workspace border (0..5 pixels). See NEWS.
- fixed circulateraise on non-windoze cycling mode
- fixed bug in RCombineAreaWithOpaqueness (Tim Malone <tmalone3@uswest.net>)
- fixed bug with hangling of WM_COMMAND update in client.c (Andrew M. Langmead <aml@world.std.com>)
- fixed bug with incorrect reading of ppm files (Adam Fedor <fedor@gnu.org>)
- fixed bug with incorrect window placement using automatic placement, while
there were shaded windows on other workspaces
- fixed some buffer overflow issues in WINGs
- fixed bug with WPrefs.app not selecting the menu appearance options after
startup.
- replaced free() with wfree() wherever appropriate
- fixed some memory leaks generated by wstrappend()
- fixed code that was dependant on the order of evaluation in wrlib. This
fixed a number of problems, like greyscale jpegs that showed up in red
and possibly the problems with pseudocolor displays.
- made clicks on unfocused windows be effective on focus follow mouse/sloppy
Changes since version 0.62.0:
.............................
- made shortcuts available during alt+tab
- save lowered state of menus
- fixed portability bugs for old X servers
- added check for XInternAtoms in configure and replacement code
- fixed window cycling with single key shortcut
- fixed WPrefs crash on menu editor
- install only needed icons for WPrefs.app
- updated Finnish translations
- fixed user-whining-windoze-cycling bug
- added option for f'n windoze cycling..
- added --create-stdcmap and made std colormap creation off by default
- updated get/setstyle to account for new options
- fixed crash on restart bug
- made GNOME wm hints take precedence over KDE.. KDE hint will only be read
if GNOME hints dont exist
- updated kwm hint support (maximize hint)
- added memory usage in info panel
- fixed sticky hint handling in GNOME
- fixed saving of maximized state for restart
Changes since version 0.61.1:
.............................
- fixed bug with menu editor in WPrefs placing cut/paste-ed entries in wrong
positions.
- removed "Keep Attracted Icons" option from Clip's menu. See NEWS.
- fixed bug in Xdnd code to be able to work with QT. (This is QT's bug so
it will change again in future)
- replaced debugging output stuff with Nana
- fixed problem with session restoring and dock autolaunch (Jacek Naglak
<nag@promail.pl>)
- put WorkspaceNamePosition in WPrefs
- added a lock to docked icons
- fixed crashing bug in WPrefs.app's Appearance section.
- fixed sorting of names in icon chooser, and file browser.
- fixed name completion problem in file browser.
- added new sound events (from pascal)
- fixed bug when moving/resizing internal windows
- propagation of -noext for submenus (David Reviejo <dreviejo@arrakis.es>)
- fixed problem with mouse sampling rate in SGIs
- optimized frame drawing (Swivel <swivel@gnugeneration.com>)
- removed broken optimized frame drawing patch
- added Select Window button in attribute inspector
- made icon images scale by a constant factor when changing icon size
- added support for standard colormaps in PseudoColor visuals
- changed geometry view for move/resize to a WINGs widget
- removed DisplayFont option
- added NoBorder attribute
- changed semantics of GNUstep window attribute hints
- added get-wings-flags and get-wutil-flags with the same purpose as
get-wraster-flags, but for compiling and linking with WINGs/WUtil
- fixed bug handling non-string values given to string valued options in
defaults.c
- fixed colormap_window crash bug (appears when launching some apps from dock,
or removing apps from gnome panel etc)
- added DONT_SCALE_ICONS #define
- added --no-autolaunch patch (John Bafford <dshadow@zort.net>)
- made Apply button work on window inspector for windows with no WM_CLASS
- changed sound server code to be more efficient
- fixed crash with broken apps that set mask size != pixmap size in icons
- made wmsetbg accept relative paths for images that are not in PixmapPath
- fixed windoze cycling
- replaced XSync with XFlush in wUnshadeWindow()
- added GNUstep window recognition through WM_CLASS->class == GNUstep
- made window focusing not change titlebar color of GNUstep windows
- disabled passive mouse grabbing in client area of GNUstep window
when they are unfocused
- added Jim Knoble <jmknoble@pobox.com>'s cursor thing patch
- fixed lock of wmaker when clicking on menu multiple times
- made transients appear near their owner
- fixed crash bug with broken java implementations (Miguel Covarrubias
<mcovarr@tigr.org>)
- made Revert on attributes panel apply the reverted changes immediately
to avoid inconsistent internal state
- color dragging works correctly now
- arbitrary stacking levels
- save window shortcuts in state
- changed license of Marco's icons to GPL
- added --dont-restore cmd line option to not restore previous state
- fixed focus bug when moving wmaker panel windows in focus-follow mouse
Changes since version 0.61.0:
.............................
- fixed Xdnd by cropping filename with ""
- fixed OPEN_MENU
- fixed crash when moving a shaded window with keyboard
- fixed problem with window shortcut assignment from the menu
- fixed problem with fonts in WINGs (Masahide -mac- NODA
<mac@flab.fujitsu.co.jp>)
- fixed multihead bugs (Morten Bøgeskov" <mb@dbc.dk>)
- fixed crashing bug when saving session information.
- fixed crashing bug related to onmipresent icons in Clip
- added _WINDOWMAKER_ICON_TILE and _WINDOWMAKER_ICON_SIZE hint in
the noticeboard window
Changes since version 0.60.0:
.............................
- fixed bug in window attribute panel
- SGI portability fix (Graham Whitted <gbw@sgrail.com>)
- fixed compilation problem with --enable-singleicon
- fixed compilation problem with WS_INDICATOR
- fixed crash bug with SGI (defaults.c) (Graham Whitted <gbw@sgrail.com>)
- fixed sloppyfocus problem in multihead dpys (Morten Bøgeskov
<morten@bogeskov.dk>)
- fixed WorkspaceSpecificBackground bug in wmsetbg
- give preference to windows in window list when switching focus after
workspace change (Richard Kilgore <rkilgore@ece.utexas.edu>)
- brought back --locale cmd line option
- fixed bug with WorkspaceNameDisplayPosition (Emanuele Caratti <wiz@iol.it>)
- added missing kbd shortcut definitions for window shortcuts
(Michael Smith <mjsmith@spirit.com.au>)
- fixed floppy button layout in filepanel (Matthew Ashton <mrashton@home.com>)
- fixed bug with documentedited close button (Felipe A. Rodriguez
<farz@mindspring.com>)
- fixed some buffer overflows
- fixed some problem with the alpha
- fixed some problems with non gcc compilers.
- fixed problem with showing instance.class in the inspector window.
- fixed crash when displaying workspace name in some positions.
- fixed compilation problem when WS_INDICATOR was defined.
- added edge attraction. See NEWS.
- fixed buggy RSaveXPM() in wraster library. Its output was messed up, and
caused crashes for icons with more than 1024 colors.
- sinking windows (such as gmc icons) won't be calculated in edge resistance
or attraction.
- removed drop shadow for text on title bar code. (TITLE_TEXT_SHADOW)
- text on title bar is now possible to be drawn by plugin. See NEWS.
- WPrefs: added support for button4/5
- fixed scrolling of menus outside screen (Vito Caputo
<swivel@virtual-webworld.com)
- added dialog window for menu commands that can't be executed
- fixed crash when deiconifying windows when icons are disabled
- better smart placement (Gabor Melis <gabor.melis@essnet.se>)
- replaced old linkedlist code with WMBag
- fixed wmsetbg to use right bg color with transparent background images
- fixed crash with Assertion "bad_root_window" && 0' failed. on startup
- fixed crash when more than 1 dockapp fails to launch on startup
- added a different dock setup config for each screen size
- fixed PPosition handling
- New "Smart placement" mode. 'Smart' is no longer an alias to 'Auto' but
a different mode of placing windows. 'Auto' keeps the old behavior.
- added the dir where the menu is being read from to the search path
given to cpp
- doing a multiwindow selection shortcut and hitting the shortcut
repeatedly will cycle through the selected windows
- fixed crash when overwriting a string constant (default font specs) in WINGs
Changes since version 0.53.0:
.............................
- fixed a bug that caused icon overlaping in Clip, when icon was moved around.
- this time really added libwmfun to distribution.
- made deiconification not automatically focus window in sloppy focus
- fixed crash with DisableMiniwindows and icon pixmap changes
- fixed crash when changing icon of window without WM_CLASS
- added hysteresys for offscreen menu scrollback
- fixed bug with IgnoreFocusClick
- fixed crash with windows with width == 1 (Alban Hertroys
<dalroi@wit401310.student.utwente.nl>)
- added SHEXEC command
- fixed resizebarback for SHADOW_RESIZEBAR ( jim knoble jmknoble@pobox.com)
- added balloon help everywhere
- fixed bug with FullMaximize attribute
- GNOME: button events not bound in wmaker are proxyized (to gmc)
(Paul Warren <pdw@ferret.lmh.ox.ac.uk>)
- fixed bug with restoration of maximized window after restart with
--enable-kde
- added high-quality filtered rescaling (smoothed rescaling) to wrlib/wmsetbg
- added SmoothWorkspaceBack
- fixed crash bug in Paths section of WPrefs
- optimized image rendering for 15/16 bpp
- user menus' paths were changed. See NEWS.
- added a timeout for the workspace name fading
- HP-UX compiler compatibility workarounds (Sebastien Bauer
seb_bauer@bigfoot.com)
- fixed crash with attributes panel
- save state of all menus when exiting (Sebastien Bauer
seb_bauer@bigfoot.com)
- added GNUstep info panel (still needs beautification..)
- made the paths selector in WPrefs.app use the open file panel
- fixed crash bug with hiding apps without dock/clip
- fixed a mem leak in superfluous mode caused by the ghost icon.
- added possibility to set omnipresent icons in Clip. See NEWS.
- fixed bug in WPrefs menu editor
- fixed crash when moving internal window with kbd
- fixed compilation problem on IRIX machines (Neil Muller
<neil@octane.sun.ac.za>)
- replace xde support drop on dock with xdnd.
- added an (internal use) environment variable for telling WPrefs whats's
the name of the wmaker binary being ran.
- more elegant text entries in Clip's menu, regarding single/multiple
selected icons.
- fixed cosmetic bug in geom. dpy window for 8bpp
- removed --enable-kanji and added MultiByteText option
- rewrote font code to use WINGs
- made autoraise only work for the active window
- fixed compilation problem with OpenWindows and other non-X11R6 systems..
- fixed crash bug when iconsize=24
- fixed portability prob with raise() in SunOS
- fixed icon placement bug (Markus Schoder <Markus.Schoder@online.de>)
- added delete and floppy buttons in file panel.
Changes since version 0.52.0:
.............................
- patched wmsetbg to work with dynamically loadable texture renderer code
- added libwmfun to distribution (forgot to do so in 0.52.0)
- added MenuStyle option
- changed configuration updating to use notifications
- fixed window move through workspaces in nonopaquemove
- added message to immediately reread configuration data
- fixed some bug in XKB modelock toggling
- fixed crash bug when hiding apps with appicon disabled
- fixed wrong initial workspace # being shown on attributes panel
- XSMP updates
- update colorpanel
- applied WMSound patch from "Quinn, Anthony" <Anthony.Quinn@usa.xerox.com>
- fixed focus bug with unfocusable window (I swear I had fixed that before...)
- applied windoze cycle patch from Paul Warren <pdw@ferret.lmh.ox.ac.uk>
- changed initscript and exitscript execution from fork()/exec() to system()
- added ResizebarBack and added appropriate backwards compat. hacks in setstyle
- applied ]d's patch to allow DEMATERIALIZE_ICON over windows
- made clip arrows gradiented
- added a crashing dialog panel to select what to do on crashes.
- fixed the problem with showing a window as focused in the window list menu
while it was on another workspace.
- show workspace name on screen when switching workspaces
- made setstyle support WorkspaceSpecificBack
- fixed getstyle prob with filenames with spaces (Pierre Phaneuf
<pp@ludusdesign.com)
- fixed crash with InfoPanel in multihead dpy
- Fixed bug in WPrefs that added a new line at the end of autostart script
at every save, growing it indefinitely.
- fixed a memory leak in wrlib (Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>)
- fixed crash during forced shutdown of X (Wolfram Gloger
<wmglo@dent.med.uni-muenchen.de>)
Changes since version 0.51.2:
.............................
- made the Attributes panel be available for all windows, even
for completely broken apps (although settings wont be saved for
completely broken apps)
- fixed compilation problems with compile time #defines
- workaround for crash during startup related to hiding miniaturized windows
from Matt Armstrong <matt_armstrong@bigfoot.com>
- fixed focus problem with unfocusable windows
- fixed bug in WPrefs that changed EXIT to SHUTDOWN
- fixed menu title messup bug in WPrefs
- added a dot to mark hidden applications (compile time) (id@windowmaker.org)
- enhancements to the modelock patch (id@windowmaker.org)
- show kbd mode for modelock (id@windowmaker.org)
- enhanced positioning of transient windows
- added dynamically loadable texture renderer code
from Tobias Gloth <gloth@online.de>
- added DisableMiniwindows option
- kde: miniaturize animation will match the taskbar icon (KWM_WIN_ICON_GEOMETRY)
- miniwindows show the title of the window if there is none set for it
- fixed crash on kpanel restart
- remember window shortcuts after restart
- change edge resistance to account for panels and stuffs
- narrower menus
- fixed auto raise/lower behaviour of clip for docked applications that have
their own window (applets).
- cleaned up Clip's autocollapsing code, and made it to be similar to the
auto raise/lower code (much cleaner).
- fixed a race condition in Clip behavior when changing workspaces, if set to
autocollapsing.
Changes since version 0.51.1:
.............................
- fixed bug with window that can get focus if both shaded and hidden.
- maximize for full screen
- fixed problem with frame drawing in non-opaque
- fixed installation path prob [jmknoble@pobox.com]
- fixed bug moving window when only one window is on screen
- fixed bug with ignored GNUstep attributes
- fixed WPrefs crash in Mouse Preferences
- fixed crash bug in WINGs/wmaker startup
- added workaround for kde pager crash bug
- made %W in root menu and wmsetbg -w take numbers starting from 1
- fixed crash bugs with kpanel
Changes since version 0.51.0:
.............................
- put . to mark hidden apps
- fixed dont set xset stuff option in WPrefs
- fixed menu title messup in WPrefs
- fixed WPrefs message dialogs for invalid menus
- fixed workspace back setting in all screens
- fixed WorkspaceSpecificBack / wmsetbg
- added WindozeCycle patch (being rewritten)
- cleaned up focus/unfocus state transitions
- made WPrefs more robust
- fixed locale file (po) installation stuff
- fixed focus loss when dragging window across workspaces
- fixed workspace baby boom with nextworkspacekey
- removed ignore_next_unmap kluge
- install defaults data in /usr/local/etc
- added menu for miniwindow
- fixed remove resizebar from shaded window
- rewrote library/header search code in configure
- rewrote window move/edge resistance code
- added window border resistance
- changed EdgeResistance option to only YES/NO
- added workaround for glibc bug in sscanf("", bla, bla)
- hopefully fixed WM_COLORMAP_WINDOWS crash bug
- fixed searching of localized menus
- fixed --help option
- fixed handling of docked apps with . in their instance names
- RSupportedFileFormats() in wrlib will now return a static buffer
- fixed bug in StartHidden
- a little faster startup
- will rearrange icons after moving an icon if autoarrangeicons
- fixed icon overlap bug
- fixed crash with internal dialogs and multi-heads
- added standard colormap support to wrlib (taken from libXmu sources)
- fixed memory leak in attribute panel
- fixed crash with CalendarManager deiconify
- fixed heisencrash when mapping new windows
- fixed totally buggy wmaker.inst ~/.xinitrc checker
Changes since version 0.50.2:
.............................
- added some new icons made by Marco
- kde: fixed stacking order reporting for modules
- gnome: fixed state change request handling
- fixed handling of file names with non-alphanum characters in wmsetbg
- hopefully fixed timestamp problem that caused regeneration of configure
- fixed a bug in the auto raise code
- made SIGHUP exit wmaker and SIGUSR1 restart for GNOME compatibility
- fixed %a() bug (now it really is fixed!)
- fixed docking icons in last icon
- fixed WMInsertPopUpButtonItem()
- fixed bug that caused fonts of themes to be ignored
- fixed bug in path handling in getstyle
- stop icon explosion animation by clicking on root window
- made SAVE_SESSION save the state of the dock
- added command line option aliases that adhere to the GNU standards
- fixed png gamma bug (actually unmade buggy fix)
- fixed bug in property notify handling
- removed KeepTransientsOnTop
- fixed window focus when switching workspaces
- fixed attribute inspector Apply for dont bind keys
- fixed bad colormap bug (I hope)
- added acceleration to keyboard window move
- %W expand to current workspace #
- fixed background pixmap color problem (cpixmap etc)
- applied drop shadow patch
- fixed crash on startup with xconsole and xdm
- fixed portability prob with MkLinux/PPC
- fixed portability prob with Alpha
- added color panel to WINGs
- added support for olwm/OPEN LOOK(tm) hints
- added SaveYourself support
- fixed bug in start maximized
- added _WINDOWMAKER_NOTICEBOARD protocol
- added docklib
- updated utility parameter format to GNU standards
- removed libPropList from distribution and merged with GNOME one
Changes since version 0.50.1:
.............................
- fixed wmsetbg
- fixed parsing of WorkspaceSpecificBack
- fixed initial workspace for new windows
- added the workspace button proxy thingy for GNOME
- added more GNOME compatibility fixes
- fixed bug in %a() macro in root menu
Changes since version 0.50.0:
.............................
- fixed bug that allowed docking of icons to outside the screen
- added extra code to handle kpager bug
- fixed crash when opening appicon menu
- fixed problem that caused Motif hints to be sometimes ignored
- fixed bug in layer treatment of GNOME hints
- fixed weirdness in initial window workspace
- fixed problem with Sun compilers
- fixed bug with () Workspace{Specific,}Back specs
- added --disable-rpath option (from KDE) by request
- maybe fixed bug with StarOffice
- fixed pipe fd inheritance mess
- fixed bug in kde workspace renaming
- fixed installation problems
Changes since version 0.20.3:
.............................
- window list is ordered by workspace
- preliminary grid move mode
- fixed prob with docked apps with the same name switching places (like wmmon
and wmmon -s)
- wrapping of workspace switching for 5button mice
- added restart in fallback menu
- fixed buglet in modifier error reporting
- extra options in window command menu
- changed select() used in wevent.c to poll()
- fixed bug in SGI boxes (black dialogs)
- added IconTitleBack, IconTitleColor
- made error checking stricter
- fixed crash when saving application supplied icons that have many colors
- added move threshold to menus
- added textured gradient textures
- added -nofont flag for setstyle
- added -p flag and theme pack support for getstyle
- fixed crash bug when clicking on menu title opened with kbd
- fixed bug that caused incorrect saving of icon configuration (the -name bug)
- scale pixmap texture for workspaceback type will maintain aspect ratio
- fixed memory leak in jpeg loader
- started XStandardColormap support
- added StartMaximized window flag
- fixed bug of mixed up Unfocusable and StartMiniaturized flags
- yet another try to switch to shared libraries
- workspace specific background images
- stack new windows to under focused window if autofocus is off (disabled)
- added kde support
- implemented the "GNOME Window Manager Compliance" stuff
- window move/resize by keyboard
- rewrote window attribute code to make it cleaner
- added --enable-lite configure option
- added support to change prompt in %a() for root menu
- rewrote exit code
- added KeepInsideScreen=YES; for scilab in default WMWindowAttributes
- added an option to the Clip, to allow automatic Raise/Lower when the mouse
cursor enter/leave the Clip.
Changes since version 0.20.2:
.............................
- hysteresis for menu item selection (delayed selection for selecting
submenu items)
- window shortcuts
- removed Hide Others from window commands menu
- window commands menu will close when the window for it is closed
- made shade not set the Iconic state
- fixed bug in miniaturizing atribute panel
- made frame rectangles be more visible in PseudoColor (8bpp)
- fixed bug for 64bit machines
- added support for ICCCM 2.0 WM_COLORMAP_NOTIFY message
- fixed bug for apps that put strings with . in WM_CLASS
- added handling for reparented client windows
- fixed bug with window positioning
- fixed cascade window placement to account for dock
- added modelock stuff
- added X include path in gfx header when configure searches for headers
- fixed bug in window positioning by clients
- added run-time test for shared pixmap support on server
- changed order of link flags in Makefiles
- fixed problem with random window placement
- fixed multiple window selection for multiheads
- grayscale and 8bit jpeg support
- fixed client restoration in restart/exit in multiheads
- started session management code
- fixed problem with docked programs that have names with spaces
- updated WPrefs.app for iconificationstyle
- added -static command line option
- put redundant NoWindowOverDock
- fixed overlapping clip icon bug
- extended window level code
- added KeepOnBottom hint
- added iconification style to WPrefs.app
- fixed crash with bad value in defaults file
- changed icon stacking code
- added primitive support for 5 button mouse (for switching workspaces)
- fixed BadAccess and crash on programs that do XGrabButton
- fixed bug with rootmenu Exec not working when stty is called from ~/.tcshrc
- fixed bug with Move menu and sloppy focus
- temporarily removed SHELL support in apps menu
Changes since version 0.20.1:
.............................
- fixed timer bug
- removed NoWindowUnderDock
- error reporting mechanism has changed in wrlib. Instead of a writing
the message in a string, it will place the error code in RErrorCode
- smoother icon selection
- persistent client supplied icon pixmaps
- fixed yet another crash on emacs exit bug
- fixed portability prob in wrlib shm code
- fixed bug in DISPLAY variable setting in multiheads
- fixed a few more portability problems related to storing struct properties
- fixed damaged balloons on Suns/8bpp (I guess)
- better "one of" type option handling
- added a timeout for some animations
- support for large binary files in wxcopy/wxpaste
- fixed bug of losing focus when resizing/moving windows
- fixed bug in libproplist
- fixed focus with sloppy
- changed permissions of shm segments to 0666. Now, if someone has a shm
leak, we can know who it is.
- faster titlebar texture update
- faster icon kaboom
- added different undocking animation
- updated wmaker -version to output "Window Maker" instead of WindowMaker
- fixed crash bug with transient windows (gimp etc)
- fixed bug with popen()+wwarning() - problem opening cpp'ed menus
- added test for header files in configure for gfx libraries
- simplified building process, making libPropList be always built
- fixed crash with bad mgradient color entry
- docked appicons that are being edited/killed cant be moved (mutex fix)
- more features in wxcopy/wxpaste
- fixed bug with state file in multiheads
- selection retrieval moved to WINGs
- fixed workspacekey to switch workspaces in the current layer
- fixed workspacekey to not switch to inexisting workspace unless
AdvanceToNewWorkspace is YES
- fixed bug with disappearing windows if a workspace switch is made on startup
- fixed blocking of window creation/destroy events when opening menu with kbd
- fixed aspect ratio setting bug
- fixed crashing when miniaturized window is closed during animation
- added XDE support
- fixed stupid bug in shape stuff
- raised threshold for removing docked icons
- fixed HideOthers for windows with NoAppIcon=YES
- if Cancel is pressed in dialog box of %a in menu cmd lines, the command
will be canceled
- slightly better dithering for 8bpp
- apps menu will use $SHELL, instead of /bin/sh to run EXEC menu commands
- cleaned up some code (GetNormalHints(), wManageWindow(),
wGetWindowSavedState() et al, )
Changes since version 0.20.0:
.............................
@@ -36,7 +873,6 @@ Changes since version 0.19.3:
- AIX bug compatibility in XmbTextEntents()
- fixed jpeg loading bug
Changes since version 0.19.2:
.............................

1463
FAQ

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,13 @@ If I18N support does not work for you, check these:
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
@@ -25,9 +32,9 @@ If I18N support does not work for you, check these:
here:
ftp://ftp.linux.or.jp/pub/RPM/glibc
- if you'd like to display multibyte characters, wmaker have to
be compiled with multibyte character support. Add this option
to the configure, "--enable-kanji".
- if you'd like to display multibyte characters, set the
MultiByteText option to YES in ~/GNUstep/Defaults/WindowMaker
and ~/GNUstep/Defaults/WMGLOBAL
- the fonts you're using support your locale. if your font
setting on $HOME/GNUstep/Defaults/WindowMaker is like..

70
FAQ.I18N.cs Normal file
View File

@@ -0,0 +1,70 @@
Často kladené otázky na podporu místního nastavení
==================================================
Pokud vám nefunguje podpora I18N, tak zkontrolujte tato nastavení:
- systémová proměnná LANG musí být nastavená tak, aby odpovídala vašemu
místnímu nastavení (čeština = czech), vaše místní nastavení musí být
podporovatelné vaším operačním systémem nebo X emulací. Všechny
podporovatelné lokalizace zobrazíte příkazem "locale -a". Měli byste
také zkontrolovat, zda-li je vaše místní nastavení podporované
X emulací. Soubor: "/usr/X11R6/lib/X11/locale/locale.alias" by měl
obsahovat podobnou sekvenci (podpora pro češtinu):
cs cs_CZ.ISO8859-2
cs_CS cs_CZ.ISO8859-2
cs_CS.ISO8859-2 cs_CZ.ISO8859-2
cs_CZ cs_CZ.ISO8859-2
cs_CZ.iso88592 cs_CZ.ISO8859-2
cz cz_CZ.ISO8859-2
cz_CZ cz_CZ.ISO8859-2
- zkontrolujte použití správných fontů pro vaše místní nastavení.
Pokud nepoužíváte správné fonty s kódováním, které je nastaveno v
Xlib nebo libc, tak se můžou dít "dost divné věci". Zkuste explicitně
zadat kování do proměnné LANG: LANG=cs_CS.ISO8859-2 nebo
LANG=cs_CZ.iso88592 a znovu zkontrolujte:
"/usr/X11R6/lib/X11/locale/locale.alias"
- pokud váš operační systém nepodporuje místní nastavení (locales), nebo
pokud váš OS nepodporuje místní nastavení pro váš jazyk, můžete
použít emulaci místního nastavení X Window Systému. Zprovoznit tuto
emulaci je možné spuštěním ./configure s volbou "--witn-x-locale".
Pokud používáte nějaký komerční systém jako je například IRIX, AIX,
Solaris, ...,tak asi X emulaci nebudete potřebovat. Ovšem pokud je
vaším operačním systémem Linux, NetBSD nebo jiný užasný, volně
šiřitelný operační systém, tak je možné, že vaše místní nastavení
zatím není podporované. Potom použijte volbu "--witn-x-locale".
Pozn: Aby jste mohli používat X emulaci místních nastavení, tak vaše
Xlib musí být zkompilované s touto podporou. Xlib v RedHat 5.0
tak zkompilované nejsou (RH4.x jsou OK). Překompilované Xlib
s podporou pro emulací místních nastavení pro RH5.0 jsou
dostupné na adrese:
ftp://ftp.linux.or.jp/pub/RPM/glibc
- pokud chcete zobrazovat multibyte znaky, nastavte volbu MultiByteText
na YES v souborech:
~/GNUstep/Defaults/WindowMaker
~/GNUstep/Defaults/WMGLOBAL
- fonty, které používáte by měli být podporované vaším místním nastavením.
Jestliže vaše nastavení fontů v souboru ~/GNUstep/Defaults/WindowMaker
vypadá takto:
WindowTitleFont = "-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*";
MenuTitleFont = "-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*"; ,
nemůžete zobrazovat znaky jiné než iso8859-x ve fontu helvetica.
Jednoduchý způsob, jak zobrazovat znaky různých jazyků, je nastavit všechny
fonty takto:
"-*-*-medium-r-normal-*-14-*-*-*-*-*-*-*"
Také je nutné změnit nastavení fontů v souborech stylů v adresáři:
~/Library/WindowMaker/Style.
- pokud si nejste jisti, zda-li systémová proměnná LC_TYPE správnou
hodnotu, tak ji nenastavujte.

61
FAQ.I18N.sk Normal file
View File

@@ -0,0 +1,61 @@
(Toto je len preklad dosť starého súboru! Ak by ste mali skutočne problémy
s Window Makerom a slovenčinou a v tomto súbore by ste nenašli pomoc,
pošlite popis problému na adresu <judas@linux.sk>.)
Ak vám nefunguje podpora miestnych nastavení, skontrolujte nasledujúce:
- premenná LANG je nastavená na vaše miestne nastavenia a tieto
sú podporované vašim OS alebo X emuláciou. Zoznam podporovaných
miestnych nastavení získate príkazom "locale -a". Zoznam
miestnych nastvení podporovaných X emuláciou sa nachádza v
súbore "/usr/X11R6/lib/X11/locale/locale.alias".
- používate správne fonty pre svoje miestne nastavenia. Ak
používate font s odlišným kódovaním ako je nastavené v Xlib
alebo libc, môžu sa diať čudné veci. Skúste explicitne zadať
kókovanie do premennej LANG, teda sk_SK.ISO-8859-2. Znovu,
pozrite si súbor "/usr/X11R6/lib/X11/locale/locale.aliax".
- ak váš OS nepodporuje žiadne miestne nastavenia alebo váš OS
nepodporuje vaše miestne nastavenia, môžete použiť emuláciu
podpory miestnych nastavení X Window Systému. To urobíte
voľbou "--with-x-locale" skriptu configure. Ak používate
komerčný OS ako Solaris, IRIX, AIX, ..., pravdepodobne
nepotrebujete použiť X emuláciu miestnych nastavení. Ale ak
je váš OS Linux alebo NetBSD alebo ..., je možné, že vaše
miestne nastavenia ešte nie sú podporované. Vtedy použite
"--with-x-locale".
Pozor: aby ste mohli používať X emuláciu miestnych nastvení,
vaša Xlib musí byť skompilovaná s touto podporou.
Xlib v Linux RedHat5.0 tak skompilovaná nie je.
(RH4.x je v poriadku). Prekompilovaná Xlib pre
RH5.0 s podporou emulácie miestnych nastavení je
dostupná na adrese
ftp://ftp.linux.or.jp/pub/RPM/glibc
- ak chcete zobrazovať multibyte znaky, nastavte možnosť
MultiByteText YES v ~/GNUstep/Defaults/WindowMaker a
~/GNUstep/Defaults/WMGLOBAL
- fonty, ktoré používate, podporujú vaše miesne nastavenia.
Ak vaše nastavenia fontov v ~/GNUstep/Defaults/WindowMaker
vyzerajú takto:
WindowTitleFont = "-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*";
MenuTitleFont = "-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*";
......................................................
potom nemôžete zobrazovať znaky iné ako iso8859-x vo fonte
helvetica. Jednoduchý spôsob ako zobrazovať znaky rôznych
jazykov je nastaviť všetky fonty takto:
"-*-*-medium-r-normal-*-14-*-*-*-*-*-*-*"
a tiež potrebujete zmeniť nastavenia fontov v súboroch štýlov
v adresári ~/Library/WindowMaker/Style.
- premenná LC_CTYPE nie je nastavená alebo má správnu hodnotu. Ak
si nie ste istí, nenastavujte ju.

477
INSTALL
View File

@@ -1,5 +1,5 @@
Installation Instructions for WindowMaker
Installation Instructions for Window Maker
@@ -7,55 +7,92 @@ SUPPORTED PLATFORMS
===================
(ie: I've heard someone has compiled it on...)
- Intel/Linux RedHat 4.2 (primary platform)
- Intel/Linux other distributions
- Sparc/Linux RedHat 5.1
- PowerPC/MkLinux
- Alpha/Linux RedHat 5.1
- Intel GNU/Linux Conectiva 5.9 (beta)
- Intel GNU/Linux Slackware
- Intel GNU/Linux Debian
- Intel GNU/Linux other distributions
- Sparc GNU/Linux RedHat 5.1
- PowerPC GNU/MkLinux
- Alpha GNU/Linux RedHat 5.1
- FreeBSD
- NetBSD
- OpenBSD
- BSDI 4.0
- Solaris 2.5.1, 2.5.2
- Solaris 2.6.0
- Solaris 2.7beta
- Solaris 2.8 on Ultra Sparc 10 and E450
- SCO Unix
- SGI Irix
- SGI Irix 5.x, 6.5
- OSF/1
- HP-UX
- AIX 3.2.5
- AIX 4.1.4 / IBM PowerPC
- AIX 4.3.1 / IBM CC compiler
- AIX 4.3.2 / IBM PowerPC
- AIX 5.3
- DEC Alpha/Digital UNIX 4.x
- XFree86 / OS/2
- Corel NetWinder
- SunOS 4.x
- PowerMac / Power MachTen 4.1.1 over MacOS
- Amiga 3000 running RedHat Linux 5.1 (Rawhide)
- IBM S/390 running Linux
- IBM S/390 running Conectiva Linux (experimental)
- iBook running Darwin
- Darwin PPC / Macos X
- Windows NT with Cygwin/XFree86
- Sony PlayStation2 running Linux
Patches to make it work on other platforms are welcome.
All registered trademarks are registered by their owners. (duh)
Patches to make it work on other platforms are welcome.
REQUIREMENTS:
=============
The following software is required to use WindowMaker
The following software is required to use Window Maker:
- X11R6.x
WindowMaker can be compiled in older versions of X, like X11R5
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.
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:
If you will build WindowMaker, make sure you have gcc and the X header files
installed. Specially for newbie Linux users: you must install all X development
packages and the gcc suite. Otherwise you won't be able to build any X program,
including WindowMaker.
- Basic obvious stuff
If you will build Window Maker, make sure you have gcc (or some
other ANSI C compiler) and the X header files installed. Specially
for newbie Linux users: you must install all X development packages
and the gcc suite. Otherwise you won't be able to build any X
program, including Window Maker.
- autoconf, automake and libtool
These tools are NOT needed, but IF you have one or
more of them installed, make sure you have ALL of the following
with exactly these versions:
autoconf 2.52
automake 1.4
libtool 1.4.2
If you have a different version, disable them by temporarily
renaming them to something else or uninstalling them from your
system. If you don't develop software you don't need them,
so you can safely uninstall.
OPTIONAL:
=========
These libraries are not required to make WindowMaker work, but they
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, guraranteed to work), but other versions
might work too. Tell me if you made wmaker work with some library
with a version older than the stated here.
might work too.
- libXPM 4.7
- libXPM 4.7 or newer
Older versions may not work!!!
Available at ftp://sunsite.unc.edu/pub/Linux/libs/X/
@@ -64,142 +101,234 @@ with a version older than the stated here.
- 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
- libjpeg 6.0.1 or newer
For JPEG image support
http://www.ijg.org/
- libgif 2.2 or libungif
For GIF image support
For GIF image support
ftp://prtr-13.ucsc.edu/pub/libungif/
- libHermes 1.3.2 or newer
For faster pixel conversion in the wraster library
(its used only in some conversions - for TrueColor visuals)
http://www.clanlib.org/hermes/
- GNU xgettext
If you want to use translated messages, you will need GNU gettext.
Other versions of gettext are not compatible and will not work.
Get the GNU version from ftp://prep.ai.mit.edu
Get the GNU version from ftp://ftp.gnu.org
Most of these can be get from ftp.uu.net/pub/graphics
CONFIGURE OPTIONS:
==================
These options can be passed to the configure script to enable/disable
some WindowMaker features. Example:
some Window Maker features. Example:
./configure --enable-kanji
./configure --enable-kde --enable-gnome
will configure WindowMaker with kanji characters support compiled in.
will configure Window Maker with KDE and GNOME supported compiled in.
--disable-xpm disables use of the XPM library even if it is available on
your system.
To get a list of other options, run ./configure --help
--disable-png disables use of PNG library
--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"
--disable-tiff disable use of TIFF library
--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-gif disable use of GIF library
--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-jpeg disable use of JPEG library
--disable-motif
disable support for mwm window manager hints
--disable-shape disables shaped windows (for oclock, xeyes etc.)
--enable-openlook
enable support for OPEN LOOK(tm) window manager hints
--enable-debug adds extra debugging information. Do not use it
unless you're debugging WindowMaker.
--enable-kanji support to display Kanji characters, Korean, Chinese
and other languagues that require special characters.
--enable-gnome
enable support for GNOME window manager hints
--enable-single-icon enables the collapsing of all appicons of the
WM_CLASS+WM_INSTANCE into a single one. This feature is not
supported at all by the developers. If you have some trouble with it,
contact it's author: Christopher Seawood <cls@seawood.org>
--enable-kde
enable support for kde/kwm window manager hints
--enable-lite
remove things that are already supported in desktop environments,
like KDE and GNOME. Disabled things are: window list, root
applications menu, multiple window selection. Note that you will not
be able to exit Window Maker from itself anymore; you will have to
use kill with the SIGTERM signal or exit it from KDE. It is not
advisable to enable it.
--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:
========================
- DEC/Alpha machines
#>>>>>>>>>>>
From: Anton Ivanov <aivanov@eu.level3.net>
To: Marcelo E. Magallon <mmagallo@debian.org>
Subject: Re: Is the WindowMaker package working ok on Alpha?
> Hi,
>
> I was reading some docs on the WindowMaker tarball, and found this:
>
> | - DEC/Alpha machines
> | You might need to pass the --disable-shm flag to configure,
> | like ./configure --disable-shm
>
> is anyone having problems with WindowMaker on Alpha? Can someone
> please test this? Should the flag be passed when building on Alpha?
Disclaimer: alphas under my command have never run X and are least likely to
suddenly start running it anytime soon.
Alpha used to have some ridiculously low amount of shared memory
configured.
So quite a lot of apps used to barf. Namely - cdrecord, mysql server, etc.
Check where is yours at the moment and raise it to a more appropriate
value by either catting to the appropriate /proc entry or changing the
/usr/src/linux/include/asm/shmparam.h.
Otherwise the shared memory on alpha should be fully functional and I
see no reason to disable it. Mine are bumped up to 32 or more on most
machines.
And If I recall correctly the comments in that file are actually
wrong. Value is not bytes, but in machine size word. For alpha *8.
As I said - I do not run X on them so all #include "stdisclaimer.h"
apply.
#<<<<<<<<<<<<
- SCO Unix - run configure like
CFLAGS="-belf -DANSICPP" ./configure
- SunOS, Solaris
If you have gcc installed, after running configure, edit
src/config.h and change the #define CPP_PATH line to
#define CPP_PATH "gcc -E -x c"
Sun's cpp lacks some features needed by WindowMaker and it can
If you have gcc installed, run configure as:
CPP_PATH="gcc -E -x c" ./configure
Sun's cpp lacks some features needed by Window Maker and it can
cause problems when parsing the config files.
You also might need to use the --with-libs-from and --with-incs-from
to supply the directory where libtiff is located.
Someone mailed me that you also must make /usr/local/lib be the
first path in LD_LIBRARY_PATH to make it work.
If you have a Ultra Creator 3D or some other machine with high-end
graphics, be sure to start the X server with the default visual
set to 24bpp or you might experience problems with mangled colors.
This is a wmaker bug and will be fixed.
- 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;
* if you have problems that mention an error message with --no-reexec
uninstall libtool-1.2b and install libtool-1.3 instead. libtool-1.3
can be found in ftp.gnu.org Also read the TROUBLESHOOTING section;
* if you installed the Window Maker package from RedHat and are
installing a new version of it by hand (compiling yourself), uninstall
the package from RedHat before.
* make sure you have a symbolic link from /usr/include/X11 to
/usr/X11R6/include/X11 (if not, type ln -s /usr/X11R6/include/X11
/usr/include/X11 )
* make sure you have /lib/cpp pointing to the cpp program
If you have any doubts in doing any of the stuff above, please
don't hesitate to contact the RedHat user support. They will
kindly answer to all your questions regarding their system.
They also know much more about their own system than us
(we don't use RedHat).
- RedHat Linux
Make sure you don't have the LANG and LINGUAS environment variables
set to en_RN. Also, make sure you have /usr/local/bin in your
PATH environment variable, as for some mysterious reason the folks
at RedHat did not include it in the default configuration files
in RH 5.{0,1}.
- 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 Linux
- 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 titlebars. Or use a different
X server.
INSTALLATION:
=============
Unpack WindowMaker-data.tar.gz and move the pixmaps directory in it
to /usr/local/share/pixmaps
You can get the file at ftp://ftp.windowmaker.org. This file is not strictly
necessary, but contains some additional nice icons and other things.
autoconf and automake
---------------------
autoconf and automake are not required, but if you have them installed,
make sure you have autoconf 2.12 and automake 1.3 or newer. If you have
an older version, disable them by temporarily renaming them to something
else or uninstalling them from your system.
Build libPropList
-----------------
Note: You only need to build libPropList if you don't have it installed
in your system.
libPropList is included with the distribution, so you don't
need to download it anywhere (some people have asked me this...)
But if you already have libPropList installed on you system you
can skip this step, since configure will detect that and use the
installed version first if available.
To build libPropList, simply type the following at the shell prompt:
gunzip -c libPropList.tar.gz | tar xf -
cd libPropList
./configure
make
then, login as root and type:
make install
Build WindowMaker
-----------------
If this is the first time you're building WindowMaker, you can
simply type:
Build Window Maker
------------------
For a quick start, type the following in your shell prompt:
./configure
make
@@ -207,13 +336,15 @@ simply type:
then, login as root and type:
make install
ldconfig
or if you want to strip the binaries from debugging symbols and make them
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 WindowMaker with default parameters.
This will build and install Window Maker with default parameters.
If you want to customize some compile-time options, you can do the
following.
@@ -225,86 +356,94 @@ following.
to get a complete listing of other options that are available.
Note that the WPrefs.app installation path is configured
in a different way. Look at WPrefs/README for information.
2. Run configure with the options you want. For example, if you
want to use the --enable-kanji option, type:
want to use the --enable-kde option, type:
./configure --enable-kanji
./configure --enable-kde
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 WindowMaker. Just type:
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 WindowMaker in your system.
Again, type:
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 WindowMaker
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 WindowMaker must do the
Every user on your system that wishes to run Window Maker must do the
following:
1. Install WindowMaker configuration files in your home directory.
1. Install Window Maker configuration files in your home directory.
Type:
wmaker.inst
wmaker.inst will install WindowMaker configuration files and will
setup X to automatically launch WindowMaker at startup.
wmaker.inst will install Window Maker configuration files and will
setup X to automatically launch Window Maker at startup.
That's it! The configuration file where you can edit your preferences
is $HOME/GNUstep/Defaults/WindowMaker.
The $HOME/GNUstep/Defaults/WMWindowAttributes file is where you assign
icons to applications and edit some other attributes for windows. This can
be also edited from the "Attributes Panel". To access it, click the titlebar
of the window with the Right mouse button and select "Attributes...".
That's it!
You can type "man wmaker" to get some general help for configuration
and other stuff.
The $HOME/GNUstep/Library/WindowMaker/menu file is the definition of
the root menu. Edit it according to the applications you have installed.
Read the User Guide for a more in depth explanation of WindowMaker.
The User Guide is avaiable at http://windowmaker.org
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 ftp://ftp.windowmaker.org. 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 WindowMaker . Example:
when running configure in step 2 of building Window Maker. You will
also need to supply the --with-appspath option, to specify the path for
WPrefs.app Example:
./configure --prefix=/home/jshmoe
./configure --prefix=/home/jshmoe --with-appspath=/home/jshmoe/GNUstep/Apps
If you use national language support, you must also supply the --with-nlsdir
option, as:
./configure --prefix=/home/jshmoe --with-nlsdir=/home/jshmoe/lib/locale
Then make /home/jshmoe/bin be included in your search path and run
Then make /home/jshmoe/bin be included in your search PATH, add
/home/jshmoe/lib to your LD_LIBRARY_PATH environment variable and run
bin/wmaker.inst
Of course, /home/jshmoe is supposed to be replaced with your actual home
directory path.
UPGRADING
=========
If you are upgrading from an older version of WindowMaker:
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.
1. Configure and build WindowMaker as always
2. Install WindowMaker (but do not run wmaker.inst)
3. Read the NEWS file and update your configuration files,
if necessary.
TROUBLESHOOTING
===============
@@ -314,36 +453,34 @@ 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.
== When I try to start X after installing wmaker, I get this:
exec: wmaker: not found
== Error with loading fonts, even if they exist.
You probably are using a brain-damaged distribution. Add /usr/local/bin
into your path environment variable (editing .cshrc or .profile)
Try rebuilding without NLS support.
== Error during build of libPropList
== Error when configuring
make: *** No rule to make target `libPropList.a.c', needed by
`libPropList.a.o'. Stop.
ltconfig: unrecognized option `--no-reexec'
Try `ltconfig --help' for more information.
configure: error: libtool configure failed
Make sure the autoconf and automake versions you have installed are at
least:
autoconf 2.12
automake 1.3
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
If you are using the RPM's that come with RedHat 4.x, don't use them.
It is broken. Uninstall the RPM and reinstall a fresh package from
You can get them from ftp://prep.ai.mit.edu or any mirror.
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-gfx-libs="-L/usr/local/lib"
--with-gfx-incs="-I/usr/local/include -I/usr/local/include/tiff"
--with-libs-from="-L/usr/local/lib"
--with-incs-from="-I/usr/local/include -I/usr/local/include/tiff"
Put the paths where your graphic libs and their corresponding header files are
located. You can put multiple paths in any of these options, as the example
of --with-gfx-incs shows. Just put a space between them.
of --with-incs-from shows. Just put a space between them.
== configure doesn't detect libXpm.
@@ -367,17 +504,21 @@ If you're not sure, try renaming ~/GNUstep to ~/GNUtmp and then run wmaker.inst
== The root menu contains only 2 entries. ("XTerm" and "Exit...")
* WindowMaker is not finding cpp (the C preprocessor). If your cpp is
* Window Maker is not finding cpp (the C preprocessor). If your cpp is
not located in /lib/cpp, edit src/config.h and correct the path in
CPP_PATH.
== checking lex output file root... configure: error: cannot find output from true; giving up
* Read the REQUIREMENTS section of this file.
LOCALES/INTERNATIONALIZATION
============================
WindowMaker has national language support.
To enable national language support, you must compile
WindowMaker with some additional parameters.
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
@@ -403,9 +544,10 @@ 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 supply the --enable-kanji flag to configure.
as Japanese or Korean, you must set the MultiByteText option to YES
in ~/GNUstep/Defaults/WMGLOBAL
3 - Configure, build and install WindowMaker normally.
3 - Configure, build and install Window Maker normally.
4 - To select a particular locale at runtime you must set the LANG
environment variable to the locale you want. For example, if you want to set
@@ -422,7 +564,7 @@ in Bourne sh and similars
Note: If you have the LC_CTYPE environment variable set, you must
unset it before running wmaker.
For menu definition files, WindowMaker searches for them in the
For menu definition files, Window Maker searches for them in the
following order (for brazilian portuguese, in this case):
menu.pt_BR
@@ -434,9 +576,9 @@ menu
configure the fonts appropriately. Read the manual page for XCreateFontSet
to have more details about it. You must change the ~/G/D/WindowMaker file
for fonts used in titlebars, menus and other things. For fonts used in
dialog windows, change ~/G/D/WMGLOBAL. Note that at the moment you can only
supply a single font in WMGLOBAL. The %d in the font names must not be
removed.
dialog windows, change ~/G/D/WMGLOBAL. The %d in the font names must not be
removed. You can also use the supplied wsetfont script for the task.
Read the script itself for instructions.
For example, you can specify the following in ~/G/D/WindowMaker:
@@ -452,4 +594,9 @@ and in ~/G/D/WMGLOBAL:
SystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
BoldSystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
The above 2 fonts are only used by applications that use WINGs (WindowMaker
and WPrefs.app)
The wsetfont script that's supplied will allow you to change the font
settings in a easier way. Take a look in the script for details on usage.

618
INSTALL.cs Normal file
View File

@@ -0,0 +1,618 @@
Instrukce pro instalaci okenního manažera Window Maker
PODPOROVANÉ PLATFORMY
=====================
("Podporované" znamená, že to na dané platformě někdo zprovoznil...)
- Intel GNU/Linux Conectiva 5.9 (beta)
- Intel GNU/Linux Slackware
- Intel GNU/Linux Debian
- Intel GNU/Linux ostatní distribuce
- Sparc GNU/Linux RedHat 5.1
- PowerPC GNU/MkLinux
- Alpha GNU/Linux RedHat 5.1
- FreeBSD
- NetBSD
- OpenBSD
- BSDI 4.0
- Solaris 2.5.1, 2.5.2
- Solaris 2.6.0
- Solaris 2.7beta
- SCO Unix
- SGI Irix 5.x, 6.5
- OSF/1
- HP-UX
- AIX 3.2.5
- AIX 4.1.4 / IBM PowerPC
- AIX 4.3.1 / IBM CC compiler
- AIX 4.3.2 / IBM PowerPC
- AIX 5.3
- DEC Alpha/Digital UNIX 4.x
- XFree86 / OS/2
- Corel NetWinder
- SunOS 4.x
- PowerMac / Power MachTen 4.1.1 over MacOS
- Amiga 3000 running RedHat Linux 5.1 (Rawhide)
- IBM S/390 s Linuxem
- iBook s OS Darwin
Patche pro rozběhání na jiných platformách jsou vítané.
POŽADAVKY
=========
Následující software je potřebný/nezbytný pro běh Window Makeru:
- X11R6.x
Window Maker může být zkompilován na starších verzích X, jako
je X11R5 (Solaris) nebo X11R4 (OpenWindows), ale nebude to pracovat
100% spolehlivě. Na těchto systémech nebudou fungovat ikony
aplikací a budete mít problémy s používáním doku. Upgrade
uživatelských knihoven (Xlib, Xt atd.) zlepší tyto problémy pokud
nemůžete aktualizovat váš X server.
Následující software je potřebný ke zkompilování Window Makeru:
- Zákládní běžné věci
Když budete komplivat Window Maker, tak se ujistěte, že máte gcc
(nebo jiný ANCI C kompilátor) a nainstalované hlavičkové soubory
pro X. Hlavně pro začátečníky v Linuxu: musíte nainstalovat všechny
X-devel balíky a gcc. Jinak nebudete schopni zkompilovat žádný
program s grafickým rozhraním, tedy ani Window Maker.
- autoconf, automake a libtool
Tyto nástroje NEJSOU POTŘEBA, ale když máte jeden nebo dva nebo
všechny tři nainstalované, tak se UJISTĚTE, že máte přesně
následující VERZE:
autoconf 2.13
automake 1.4
libtool 1.3
Máte-li odlišnou verzi, tak ji dočasně přejmenujte, nebo ji rovnou
odinstalujte z vašeho systému. Pokud nebudete programovat, tak ji
stejně nebudete potřebovat, takže ji můžete bezpečně odinstalovat.
Pozn. libProblist není potřeba ke zkompilování Window Makeru, protože
libProblist byl přímo zabudován do WINGs. Z toho důvodu není
potřeba ani lex (flex) a yacc (nebo bison).
NEPOVINNÉ
=========
Tyto knihovny nejsou nutné pro běh Windo Makeru, ale jsou podporované, když
je budete chtít použít. Tyto verze jsou používané vývojovým týmem, který
garantuje, že budou fungovat. Ostatní verze by měli fungovat také.
- libXPM 4.7 nebo novější
Starší verze nemusí fungovat!!!
Dostupné na ftp://sunsite.unc.edu/pub/Linux/libs/X/
Je zde zabudovaná podpora pro soubory XPM, ale nenačte obrázky s
nestandardním formátem kódování.
- libpng 0.96 nebo novější a zlib
Pro podporu PNG obrázků
http://www.cdrom.com/pub/png/
- libtiff 3.4 nebo novější
Pro podporu TIFF obrázků
Dostupné na ftp://ftp.sgi.com/graphics/tiff
- libjpeg 6.0.1 nebo novější
Pro podporu JPEG obrázků
http://www.ijg.org/
- libgif 2.2 nebo libungif
Pro podporu GIF obrázků
Dostupné na ftp://prtr-13.ucsc.edu/pub/libungif/
- libHermes 1.3.2 nebo novější
Pro rychlejší konverzi obrázků (používá knihovna wraster)
Používá se pouze v některých konverzích - pro TrueColor zobrazení
http://www.clanlib.org/hermes/
-GNU xgettxt
Když chcete používat češtinu nebo jiné jazyky kromě angličtiny,
tak potřebujete GNU xgettext.
Ostatní verze nejsou kompatibilní a nebudou fungovat
GNU verze je dostupná na ftp://ftp.gnu.org
KONFIGURAČNÍ NASTAVENÍ
======================
Tyto volby mohou být předané konfiguračnímu skriptu jako argumenty za
účelem povolení/zakázání určité vlastnosti Window Makera.
Příklad:
./configura --enable-kde --enable-gnome
nakonfiguruje Window Maker s podporou KDE a GNOME
Seznam ostatních možností dostanete spuštěním ./configure --help
--with-libs-from
specifikuje, které další adresáře s knihovnami se mají
prohledávat. Řetězec -L musí předcházet každému adresáři,
např:
--with-libs-from="-L/opt/libs -L/usr/local/lib"
--with-incs-from
určuje, které další adresáře s hlavičkovými soubory se mají
prohledat. Řetězec -I musí předcházet každému adresáři,
např:
--with-incs-from="-I/opt/headers -I/usr/local/include"
--enable-single-icon
umožňuje skrýt všechny ikony aplikací WM_CLASS+WM_INSTANCE
do jedné jediné. Tato vlastnost není podporovaná ze strany vývojářů.
Když budete mít s touto funkcí problémy, tak se obraťte na jejího
autora: Christopher Seawood <cls@seawood.org>
--disable-shm
zakáže používání zdílené paměti MIT. To trochu zpomalí generování
textur, ale v některých případech se to jeví jako nezbytnost z důvodu
chyby, která způsobuje špatné zobrazování ikon a textur.
--disable-motif
zakáže podporu pokynů pro okenní manažer mwm.
--enable-openlook
povolí podporu pokynů pro okenní manažer OPEN LOOK(tm).
--enable-gnome
povolí podporu pokynů pro GNOME.
--enable-kde
povolí podporu pokynů pro KDE.
--enable-lite
odstraní nástroje a funkce, které jsou dostupné v desktopových
prosředích KDE a GNOME. Odstraní se: seznam oken, menu aplikací,
výběr více oken. Uvědomte si, že takto nebudete schopni ukončit
samotný Window Maker pomocí aplikačního menu. Budete muset zabít Window
Maker z textové konzole nebo ho ukončit z KDE nebo GNOME.
Nedoporučuje se povolit tuto vlastnost.
--enable-modelock
podpora pro XKB nastavení jazyka. Když nevíte, o co jde, tak to
pravděpodobně nebudete potřebovat.
--enable-sound
povolí podporu modulu zvukových efektů.
--disable-xpm
zakáže podporu knihovny XPM, pokud je dostupná na vašem systému.
--disable-png
zakáže podporu knihovny PNG.
--disable-tiff
zakáže podporu knihovny TIFF.
--disable-gif
zakáže podporu knihovny GIF.
--disable-jpeg
zakáže podporu knihovny JPEG.
--disable-shape
zakáže tvarovaná okna (pro oclock, xeyes, atd.).
POŽADAVKY PRO SPECIFICKÉ PLATFORMY
==================================
-DEC/Alpha
Následující mail není přeložen, ale hovoří se v něm, že pravděpodobně
není potřeba konfigurovat Window Maker na Alphě s volbou --disable-shm.
-------------------------------------------------------------------------------
From: Anton Ivanov <aivanov@eu.level3.net>
To: Marcelo E. Magallon <mmagallo@debian.org>
Subject: Re: Is the WindowMaker package working ok on Alpha?
> Hi,
>
> I was reading some docs on the WindowMaker tarball, and found this:
>
> | - DEC/Alpha machines
> | You might need to pass the --disable-shm flag to configure,
> | like ./configure --disable-shm
>
> is anyone having problems with WindowMaker on Alpha? Can someone
> please test this? Should the flag be passed when building on Alpha?
Disclaimer: alphas under my command have never run X and are least likely to
suddenly start running it anytime soon.
Alpha used to have some ridiculously low amount of shared memory
configured.
So quite a lot of apps used to barf. Namely - cdrecord, mysql server, etc.
Check where is yours at the moment and raise it to a more appropriate
value by either catting to the appropriate /proc entry or changing the
/usr/src/linux/include/asm/shmparam.h.
Otherwise the shared memory on alpha should be fully functional and I
see no reason to disable it. Mine are bumped up to 32 or more on most
machines.
And If I recall correctly the comments in that file are actually
wrong. Value is not bytes, but in machine size word. For alpha *8.
As I said - I do not run X on them so all #include "stdisclaimer.h"
apply.
-------------------------------------------------------------------------------
- SCO Unix - configure spusťte takto:
CFLAGS="-belf -DANSICPP" ./configure
- SunOS, Solaris
Když máte naistalovaný gcc, tak configure spusťte takto:
CPP_PATH="gcc -E -x c" ./configure
Preprocesoru cpp od Sunu chybějí některé vlastnosti, které Window Maker
potřebuje, a to může způsobit problémy během parsování konfiguračních
souborů. Je možné, že budete muset použít --with-libs-from a
--with-incs-from k nahrazení adresáře s libtiff.
Někdo doporučuje použít /usr/local/lib jako první cestu v LD_LIBRARY_PATH.
Když máte Ultra Creator 3D nebo jinou high-end grafickou kartu, tak se
ujistěte, že X server startuje s 24 bitovou barevnou hloubkou, jinak
můžete mít problémy s pomícháním barev. Toto je chyba Window Makeru,
která bude odstraněna.
- GNU/Linux obecně
Ujistěte se, že soubor /etc/ld.so.conf obsahuje řádek "/usr/local/lib".
Odinstalujte jakoukoliv starší verzi balíčku Window Makeru před instalací
novější verze.
Nezapomeňte spustit ldconfig po instalaci Window Makeru.
- RedHat GNU/Linux
RedHat několik obtěžujících chyb. Pokud ho používáte dodržujte několik
následujících kroků, jinak vám Window Maker nebude fungovat.
* pokud máte nainstalovaný Window Maker z distribuce RedHat, tak ho před
upgradem odinstalujte
* ujistěte se, že nemáte systémové proměnné LANG a LINGUAS nastavené
na en_RN
* ujistěte se, že vaše systémová proměnná PATH obsahuje položku
/usr/local/bin
* ujistěte se, že soubor /etc/ld.so.conf obsahuje řádek "/usr/local/lib"
před tím, než spustíte ldconfig (na konci instalace)
* pokud máte problémy, které se projevují chybovou hláškou, která
obsahuje text --no-reexec, tak odinstalujte libtool-1.2b a nainstalujte
si novější verzi libtool-1.3. libtool-1.3 můžete nalézt na adrese:
ftp.gnu.org . Přečtěte si také odstavec ŘEŠENÍ PROBLÉMÚ.
* pokud máte nainstalovaný balíček Window Maker od RedHatu a nyní
instalujete novou verzi "ručně" (kompilováním zdrojových kódů), tak
nejprve odinstalujte stávající balíček.
* ujistěte se, že se na vašem systému nachází symbolický link z
/usr/include/X11 na /usr/X11R6/include/X11. Pokud tomu tak není, tak
na příkazovou řádku napište:
ln -s /usr/X11R6/include/X11 /usr/include/X11
* ujistěte se, že máte symbolický link /lib/cpp ukazující na cpp
program
Pokud pochybujete o nějakém z předcházejích kroků, tak neváhejte
kontaktovat uživatelskou podporu distribuce RedHat. Oni vám laskavě
zodpoví všechny vaše dotazy zohledňující váš systém. Oni vědí
mnohem více o vašem (jejich) systému než my (my nepoužíváme
RedHat).
- PowerPC MkLinux
Budete potřebovat poslední verzi Xpma. Starší verze pravděpodobně
obsahují chybu, která způsobuje zamrznutí systému.
- Debian GNU/Linux
Pokud chcete podporu JPEG a TIFF, tak se ujistěte, že máte nainstalovány
balíčky libtiff-dev a libjpeg-dev.
- SuSE GNU/Linux
Pokud máte již nainstalován baliček Window Maker od SuSE, tak ho
odstraňte než se pustíte do kompilace Window Makeru. když tak
neučiníte, budete mít problémy.
- MetroX (neznámá verze)
Metrox obsahuje chybu, která zapřičiňuje, že obrázky, které jsou
nastaveny jako pozadí, jsou poškozeny. Pokud používáte Metrox a
máte podivné problémy s texturami, tak nepoužívejte textury v
titulcích nebo používejte jiný X server.
INSTALACE
=========
Nejjednodušší způsob, jak nainstalovat Window Maker, je spustit skript
Install nebo Install.cs (ten s vámi komunikuje česky). Oba skripty
vás jednoduše provedou celou instalací.
su
Install.cs
Poznámka: tato metoda neposkytuje všechny možnosti konfigurace a pokud
se setkáte s nějakými problémy, tak stejně budete muset
použít následující způsob kompilace.
Kompilace Window Makeru
-----------------------
Pro osvědčený způsob zadejte následující příkazy v shellu:
./configure
make
pak se přihlašte jako root a zadejte:
make install
ldconfig
pokud nejste programátor a nebudete ladit Window Maker, tak se můžete zbavit
ladících symbolů v binárních souborech a zmenšit jejich velikost:
make install-strip
ldconfig
Takto zkompilujete a nainstalujete Window Maker se standartními parametry.
Pokud chcete upravit některé vlastnosti, tak musíte učinit následující:
1. (volitelné) Podívejte se na část MOŽNOSTI KONFIGURACE, kde jsou
uvedené možnosti konfigurace. Nebo spusťte:
./configure --help
tak dostanete kompletní seznam všech dostupných možností konfigurace.
2. Spusťte ./configure s možností, kterou jste si vybrali. Například,
pokud chcete použít možnost --enable-kde, tak zadejte:
./configure --enable-kde
3. (volitelné) Otevřete soubor ./src/wconfig.h vaším oblíbeným editorem
a upravte některé možnosti, které si přejete změnit.
4. Kompilace. Zadejte pouze:
make
5. Přihlaste se jako root (pokud tak nemůžetet učinit, tak si přečtěte
část "Nemám rootovské helso :-(") a nainstalujte Window Maker na váš
systém:
su root
make install
Nastavení specifické pro uživatele
----------------------------------
Tyto instrukce nejsou povinné, pokud upgradujete Window Maker ze starší
verze na novější a pokud není uvedeno jinak v souboru NEWS.
Každý uživatel na vašem systému, který si přeje používat Window Maker musí
udělat následující:
1. Nainsatlovat konfigurační soubory Window Makeru do jeho domovského
adresáře:
wmaker.inst
wmaker.inst nainstaluje konfigurační soubory a nastaví X server tak,
aby automaticky spouštěl Window Maker při jejich spuštění.
To je všechno, přátelé.
Informace o konfiguraci a spoustě ostatních věcí vám poskytne:
man wmaker
Pro hlubší úvod do Window Makeru si přečtěte Uživatelskou příručku (User Guide).
Měli byste se také podívat na FAQ (Frequently Asked Questions = často kladené
otázky), pokud budete mít nějaké problémy/potíže jak při samotné kompilaci,
tak s užíváním Window Makeru.
Instalování speciálního balíčku
-------------------------------
Rozbalte WindowMaker-extra-<číslo_verze>.tar.gz v adresáři /usr/local/share
Tento soubor si můžete sehnat na adrese: ftp://ftp.windowmaker.org. Instalace
tohoto souboru vůbec není nutná. tento balíček obsahuje několik ikon a témat.
Hledejte poslední dostupnou verzi. V balíčku také naleznete soubor
WindowMaker-extra.readme, který vám poradí, co máte udělat.
Nemám rootovské helso :-(
-------------------------
Pokud nemáte superuživatelská privilegia (nemůžete se přihlásit jako root),
tak nezoufejte, protože můžete nainstalovat Window Maker do vašeho vlastního
domovského adresáře. K tomu musíte použít volbu --prefix při spuštění
./configure. Také musíte použít volbu --with-appspath, která specifikuje
cestu pro WPrefs.app.
Příklad:
./configure --prefix=/home/karel --with-appspath=/home/karel/GNUstep/Apps
Potom přidejte adresář /home/karel/bin do systémové proměnné PATH a adresář
/home/karel/lib do sytémové proměnné LD_LIBRARY_PATH a nakonec spusťte
~/bin/wmaker.inst.
Samozřejmě, že adresář /home/karel bude ve vašem případě nahrazen vaším
vlastním domovským adresářem.
UPGRADE
=======
Pokud upgradujete ze starší verze Window Makeru:
1. Nakonfigurujte a zkompilujte Window Maker jako obvykle.
2. Nainstalujte Window Maker (ale nespouštějte wmaker.inst).
3. Přečtěte si soubor NEWS a aktualizujte vaše konfigurační soubory,
pokud je to nezbytné.
ŘEŠENÍ PROBLÉMÚ
===============
Pokud máte nějaké problémy během konfigurace (když běží configure), jako
například neschopnost použít knihovnu grafického formátu, o kterém víte, že
ho máte nainstalován, tak se podívejte do souboru config.log. Možná zde
najdete příčinu svých problémů.
== Error with loading fonts, even if they exist.
Zkuste kompilaci bez podpory NLS (národního prostředí).
== Error when configuring
ltconfig: unrecognized option `--no-reexec'
Try `ltconfig --help' for more information.
configure: error: libtool configure failed
odstraňte volbu --no-reexec ze souboru aclocal.mc a spusťte znovu configure.
Také zkontrolujte, zda verze autoconfu a automaku, které máte nainsatlované
odpovídají níže uvedeným hodnotám:
autoconf 2.13
automake 1.4
libtool 1.3
Poznámka: nemůže to být libtool 1.2b, ale musí to být libtool 1.3 ze stránek
GNU.
== configure doesn't detect libtiff, or other graphic libraries.
Smažte soubor config.cache, pak znovu spusťte configure s následujícími
volbami (a jinými, které používáte):
--with-libs-from="-L/usr/local/lib"
--with-incs-from="-I/usr/local/include -I/usr/local/include/tiff"
Na příslušná místa vložte cesty k vaším grafickým knihovnám a odpovídajícím
hlavičkovým souborům. Můžete zadat několik cest do těchto voleb, jako je to
ve výše uvedeném příkladě --with-incs-from. Jenom je nezapomeňte oddělit
mezerou.
== configure doesn't detect libXpm.
* Zkontrolujte, jestli máte symbolický link ze souboru libXpm.so.4.9 na
soubor libXpm.so
== Segmentation fault on startup
* Zkontrolujte, jestli verze knihovny libXPM je vyšší než 4.7
* Zkontrolujte, zda-li máte upravenou verzi ~/GNUstep/Defaults/WindowMaker
Pokud si nejste jisti, tak zkuste přejmenovat ~/GNUstep na ~/GNUtmp a
spusťte wmaker.inst
== "...: your machine is misconfigured. gethostname() returned (none)"
* Jméno vašeho počítače je nastaveno nesprávně, protože začíná uvozovkami.
Spusťte man hostname a zde se dozvíte, jak změnit jméno vašeho počítače.
== The root menu contains only 2 entries. ("XTerm" and "Exit...")
* Window Maker nemůže nalézt cpp (preprocesor jazyka C). Pokud se váš cpp
nenachází v /lib/cpp, tak otevřte soubor src/config.h a nastavte správně
cestu CPP_PATH.
== checking lex output file root... configure: error: cannot find output from true; giving up
* Přečtěte si odstavec POŽADAVKY na začátku tohoto souboru.
MÍSTNÍ NASTAVENÍ / INTERNACIONALIZACE
=====================================
Window Maker podporu národních jazyků. Aby jste ji povolili, tak
musíte zkompilovat Window Maker s několika dalšími parametry.
Seznam podporovaných jazyků naleznete v souboru ./po/README.
0 - Musíte mít nainstalovaný balíček GNU gettextu. Tento balíček
můžete nalézt na ftp://prep.ai.mit.edu/pub/gnu/gettext-nnn.tar.gz
Kroky 1,2 a 3 můžete vynechat, pokud používáte skript Install.cs nebo
skript Install.
1 - Vyberte si jazyky, které budete chtít používat. Zadejte seznam
těchto jazyků do systémové proměnné LINGUAS. Angličtina je
podporována vždy. Příklady
C - shell:
setenv LINGUAS "pt ja de"
Bash(sh):
export LINGUAS
LINGUAS="pt ja de"
Přečtěte si soubor po/README pokud chcete přeložit Window Maker
pro nějaký další jazyk.
2 - Navíc, pokud váš jazyk používá multi-byte znaky, například Japonština
nebo Korejština, tak musíte nastavit volbu the MultiByteText na YES
v souboru ~/GNUstep/Defaults/WMGLOBAL
3 - Nakonfigurujte, zkompilujte a nainstalujte Window Maker jako obvykle.
4 - Národní prostředí si můžete změnit i za běhu Window Makeru. Systémovou
proměnnou LANG nastavíte na vámi zvolenou hodnotu. Například, pokud
chcete použít portugalské prostředí, musíte spustit:
C - shell:
setenv LANG pt
Bourne shell a podobné:
export LANG
LANG=pt
Nakonec musíte restartovat/spustit Window Maker.
Poznámka: Když máte nastavenou systémovou proměnnou LC_TYPE, tak
musíte zrušit před spuštěním Window Makeru.
Window Maker hledá soubory s definicí menu v tomto pořadí (pro
brazilskou portugalštinu):
menu.pt_BR
menu.pt
menu
5 - Pokud si vyberete jazyk, který používá multi-byte znaky, tak musíte
příslušným způsobem nastavit fonty. Přečtěte si manuálové stránky
o XCreateFontSet k získání většího množství informací o daném
problému. Musíte změnit v souboru ~/GNUstep/Default/WindowMaker
nastavení fontů pro titulky, menu, atd. Fonty pro dialogy nastavíte
v souboru ~/GNUstep/Default/WMGLOBAL. Řetězce %d ve jménech fontů
nemusí být odstraněné. Také můžete použít skript wsetfont, který
toto vše učiní za vás. Pokud se ho rozhodnote použít, tak si k němu
přečtěte instrukce tak, že spustíte wsetfont bez argumentů.
Příklad části souboru ~/GNUstep/Default/WindowMaker:
WindowTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTextFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
IconTitleFont = "-*-helvetica-medium-r-normal-*-8-*,-*-*-medium-r-normal-*-12-*";
ClipTitleFont = "-*-helvetica-bold-r-normal-*-10-*,-*-*-medium-r-normal-*-12-*";
DisplayFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-12-*";
a souboru ~/GNUstep/Default/WMGLOBAL:
SystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
BoldSystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
Tyto dva fonty jsou používány v aplikacích, které používají WINGs (WindowMaker a
WPrefs.app).
Skript wsetfont vám umožní nastavit fonty mnohem jednoduším způsobem. Podívejte
se na jeho manuálové stránku k získání bližších informací.

608
INSTALL.es Normal file
View File

@@ -0,0 +1,608 @@
Instrucciones de Instalación para Window Maker
PLATAFORMAS SOPORTADAS
======================
(obs: Alguien me mencionó que lo compiló en...)
- Intel GNU/Linux Conectiva 5.9 (beta)
- Intel GNU/Linux Slackware
- Intel GNU/Linux Debian
- Intel GNU/Linux other distributions
- Sparc GNU/Linux RedHat 5.1
- PowerPC GNU/MkLinux
- Alpha GNU/Linux RedHat 5.1
- FreeBSD
- NetBSD
- OpenBSD
- BSDI 4.0
- Solaris 2.5.1, 2.5.2
- Solaris 2.6.0
- Solaris 2.7beta
- SCO Unix
- SGI Irix 5.x, 6.5
- OSF/1
- HP-UX
- AIX 3.2.5
- AIX 4.1.4 / IBM PowerPC
- AIX 4.3.1 / IBM CC compiler
- AIX 4.3.2 / IBM PowerPC
- AIX 5.3
- DEC Alpha/Digital UNIX 4.x
- XFree86 / OS/2
- Corel NetWinder
- SunOS 4.x
- PowerMac / Power MachTen 4.1.1 over MacOS
- Amiga 3000 running RedHat Linux 5.1 (Rawhide)
- IBM S/390 running Linux
- iBook running Darwin
- Windows NT with Cygwin/XFree86
- Sony PlayStation2 running Linux
Todas las marcas registradas están registradas por sus dueños. (duh)
Los parches que lo hagan funcionar en otras plataformas son bienvenidos.
REQUERIMIENTOS:
==============
El siguiente software se necesita para usar Window Maker:
- X11R6.x
Window Maker puede ser compilado en versiones más antiguas de X,
como X11R5 (Solaris) o X11R4 (OpenWindows) pero no funcionará 100%
correctamente.
En tales servidores no habrá íconos de aplicación y tendrá problemas
usando el dock. Actualizar las bibliotecas cliente (Xlib, Xt, etc)
ayudará si no puede actualizar el servidor.
Lo siguiente se necesita para compilar Window Maker:
- Requerimientos básicos y obvios
Si compila Window Maker, asegúrese de tener gcc (u algún otro
compilador ANSI C) y los archivos header de X instalados. Especialmente
para los usuarios de Linux principiantes: debe instalar todos los paquetes
de desarrollo de X y la suite gcc. De lo contrario no será capaz de
compilar ningún programa X, incluyendo Window Maker.
- libPropList
Esta biblioteca se puede encontrar en ftp://ftp.windowmaker.org/pub/libs
o en ftp://ftp.gnome.org/pub/libPropList
Instálela antes de compilar Window Maker.
- autoconf, automake y libtool
Estas herramientas NO son necesarias, pero SI tiene una o más de ellas
instaladas, asegúrese de tener TODO lo siguiente con estas versiones
exactas:
autoconf 2.13
automake 1.4
libtool 1.3
Si tiene una versión distinta, desactívelas temporalemte renombrándolas
a otras cosa o desinstalándolas desde su sistema. Si no desarrolla
software no las necesita, así que puede desinstalarla sin peligro.
- lex (o flex) y yacc (o bison)
Estas son usadas por libPropList. lex en realidad no se necesita ya que
su archivo de salida está incluido, pero o yo o automake es tonto,
causando que el script configure para libPropList simplemente
aborte sin ningún motivo si lex no es encontrado.
OPCIONAL:
=========
Estas bibliotecas no son necesarias para hacer que Window Maker funcione,
pero están soportadas en caso de que quiera usarlas. Los números de versión
son aquellos que yo tengo (y por lo tanto, garantizo que funciona), pero
otras versiones podría funcionar también.
- libXPM 4.7 o más actual.
Versiones antiguas pueden no funcionar!!!
Disponible en ftp://sunsite.unc.edu/pub/Linux/libs/X/
Hay soporte nativo para archivos XPM, pero no cargará imagenes de
algunos formatos poco comunes.
-libpng 0.96 o más actual y zlib
Para soporte de imágenes PNG.
http://www.cdrom.com/pub/png/
- libtiff 3.4 o más actual.
Para soporte de imaen TIFF.
Puede obtenerla en ftp://ftp.sgi.com/graphics/tiff
- libjpeg 6.0.1 o más actual
Para soporte de imagen JPEG
http://www.ijg.org/
- libgif 2.2 o libungif
Para soporte de imagen GIF.
ftp://prtr-13.ucsc.edu/pub/libungif/
- libHermes 1.3.2 o más actual
Para conversión a pixel más rápida en la biblioteca wraster.
(se usa solo en algunas conversiones - para visuales Color Verdadero)
http://www.clanlib.org/hermes/
- GNU xgettext
Si quiere usar mensajes traducidos, necesitará GNU gettext.
Otras versiones de gettext no son compatibles y no funcionarán.
Obtenga la versión GNU desde ftp://ftp.gnu.org
OPCIONES DE CONFIGURACIÓN:
=========================
Estas opciones pueden ser pasadas al script configure para activar/desactivar
algunas opciones de Window Maker. Ejemplo:
./configure --enable-kde --enable-gnome
configurará Window Maker para que sea compilado con soporte para KDE y GNOME.
Para obtener una lista de otras opciones, ejecute ./configure --help
--with-libs-from
especifica rutas adicionales por donde se debe buscar bibliotecas.
El -L flag debe preceder a cada ruta, tal como:
--with-libs-from="-L/opt/libs -L/usr/local/lib"
--with-incs-from
especifica rutas adicionales para la búsqueda de archivos header.
El parámetro -I debe preceder a cada ruta, tal como:
--with-incs-from="-I/opt/headers -I/usr/local/include"
--enable-single-icon
activa el agrupamiento de todos los appicons (iconos de aplicaciones)
del WM_CLASS+WM_INSTANCE en uno solo. Esta característica no es soportada
por todos los desarrolladores. Si tiene algún problema con ella, contacte
a su autor: Christopher Seawood <cls@seawood.org>
--disable-shm
desactiva el uso de la extensión MIT de memoria compartida. Esto
ralentizará la generación de texturas un poco, pero en algunos casos
parecerá necesario debido a un error que se manifiesta como íconos y
texturas desordenadas.
--disable-motif
desactiva el soporte para el gestor de ventanas mwm.
--enable-openlook
activa el soporte para el gestor de ventanas OPEN LOOK(tm)
--enable-gnome
activa el soporte para el gestor de ventanas GNOME.
--enable-kde
activa el soporte para el gestor de ventanas kde/kwm.
--enable-lite
quita cosas que ya están soportadas en los entornos de escritorio,
tal como KDE y Gnome. Desactiva cosas como: lista de ventanas,
menú de aplicaciones raíz, selección de ventanas múltiple. Note
que no podrá salir más desde dentro de Window Maker; tendrá que usar
kill con la señal SIGTERM o salir de KDE. No aconsejo activarlo.
--enable-modelock
Soporte para bloqueo de estado de lenguaje XKB. Si no sabe que es esto
probablemente no lo necesite.
--enable-sound
activa el soporte del módulo para efectos sonoros.
--disable-xpm
desactiva el uso de la biblioteca XPM aunque este disponible en su
sistema.
--disable-png
desactiva el uso de la biblioteca PNG.
--disable-tiff
desactiva el uso de la biblioteca TIFF.
--disable-gif
desactiva el uso de la biblioteca GIF.
--disable-jpeg
desactiva el uso de la biblioteca JPEG.
--disable-shape
desactiva la forma de ventanas (para oclock, xeyes etc.)
NOTAS ESPECÍFICAS A LA PLATAFORMA:
=================================
- máquinas DEC/Alpha
#>>>>>>>>>>>
From: Anton Ivanov <aivanov@eu.level3.net>
To: Marcelo E. Magallon <mmagallo@debian.org>
Subject: Re: El paquete WindowMaker funciona bien en Alpha?
> Hola,
>
> Estuve leyendo algunos documentos en el tarball de WindowMaker,
> y encontré esto:
>
> | - máquinas DEC/Alpha
> | podría necesitar pasar el parámetro --disable-shm a configure,
> | así ./configure --disable-shm
>
> alguien está teniendo problemas con WindowMaker en Alpha? Puede alguien
> por favor probar esto? Debería el parámetro ser pasado al compilar
> en Alpha?
Descargo de responsabilidad: alphas bajo mi mando nunca han ejecutado X
y es poco probable de que las ejecute repentinamente en algún momento.
Alpha suele tener alguna ridícula poca cantidad de memoria compartida
configurada.
Así que muchísimas aplicaciones suelen to barf. Concretamente - cdrecord, mysql server, etc.
Verifique donde está el suyo en este momento y súbalo a un valor más adecuado catting la entrada
adecuada de /proc o cambiando el /usr/src/linux/include/asm/shmparam.h.
De lo contrario la memoria compartida en alpha debiera ser completamente funcional y no veo razón
para desactivarla. Las mías están aumentadas a 32 o más en muchas máquinas.
Y si recuerdo correctamente los comentarios en aquél archivo están en realidad mal.
El valor no está en bytes, pero si en palabra de tamaño máquina. Para alpha *8.
Como dije - no ejecuto X en ellas asi que apliqué a todas #include "stdisclaimer.h".
#<<<<<<<<<<<<
- SCO Unix - ejecute configure así
CFLAGS="-belf -DANSICPP" ./configure
-SunOS, Solaris
Si tiene gcc instalado, ejecute configure como:
CPP_PATH="gcc -E -x c" ./configure
Sun cpp le falta algunas características que necesita Window Maker y
puede causarle problemas al analizar sintacticamente los archivos config.
También podría necesitar usar el --with-libs-from y --with-incs-from para
suministrarle el directorio donde libtiff se aloja.
Alguien me envió un mensaje diciéndome que también debe hacer que /usr/local/lib
sea la primera ruta en LD_LIBRARY_PATH para que funcione.
Si tiene un Ultra Creator 3D o alguna otra máquina con gráficos high-end,
asegúrese de iniciar el servidor X con el valor visual por defecto a 24bpp o
podría experimentar problemas con colores destrozados.
Este es un error de wmaker y será reparado.
- GNU/Linux en general
Asegúrese de tener /usr/local/lib en /etc/ld.so.conf y de ejecutar
ldconfig después de instalar.
Desinstale cualquier versión empaquetada de Window Maker antes de
instalar una nueva versión.
- RedHat GNU/Linux
Los sistemas RedHat tienen varios problemas molestos. Si lo usa,
asegúrese de seguir los pasos de más abajo o Window Maker no funcionará:
* si instaló el Window Maker que viene con RedHat, desinstálelo antes de
actualizar;
*asegúrese que no tiene las variables de entorno LANG y LINGUAS establecidas a
en_RN;
*asegúrese de tener /usr/local/bin en su variable de entorno PATH;
* asegúrese de tener /usr/local/lib en /etc/ld.so.conf antes de ejecutar
ldconfig;
*si tiene problemas que mencionan un menaje de error con --no-reexec
desinstale libtool-1.2b e instale libtool-1.3 en su lugar. libtool-1.3
se puede encontrar en ftp.gnu.org. También lea la sección TROUBLESHOOTING
(PROBLEMAS);
* si instaló el paquete Window Maker desde RedHat y está instalando una
nueva versión de WM a mano (compilandolo usted mismo), desinstale antes el
paquete desde RedHat.
*asegúrese de tener un enlace simbólico desde /usr/include/X11 hacia
/usr/X11R6/include/X11 (si no, tipee ln -s /usr/X11R6/include/X11 /usr/include/X11)
* asegúrese de tener /lib/cpp apuntando al programa cpp.
Si tiene alguna duda en cuanto a hacer algunas de las cosas de arriba,
por favor no dude en contactar el soporte para usuarios de RedHat. Ellos
responderán amablemente a todas sus preguntas en lo que respecta a su sistema.
Ellos también conocen mucho más acerca de su propio sistema que nosotros
(nosotros no usamos RedHat).
- PowerPC MkLinux
Necesitará tener la última version de Xpmac. Las versiones más antiguas
parecen tener errores que producen el cuelgue del sistema.
- Debian GNU/Linux
Si quiere soporte JPEG y TIFF, asegúrese de tener libtiff-dev y
libjpeg-dev instalados.
- SuSE GNU/Linux
Si instaló el paquete Window Maker desde SuSE,
desinstálelo antes de instentar compilar wmaker o podría
tener problemas.
- MetroX (version desconocida)
MetroX tiene un error que corrompe pixmaps que se establecen como
fondos de ventana. Si usa MetroX y tuvo problemas raros con texturas, no use
texturas en las barras de títulos. O use un servidor X distinto.
INSTALACIÓN:
=============
Compilando Window Maker
------------------
Para un comienzo rápido, tipee lo siguiente en el prompt del shell:
./configure
make
luego, regístrese como root y tipee:
make install
ldconfig
o si quiere remover los símbolos de depuración desde los binarios y hacerlos más
pequeños, puede tipear:
make install-strip
ldconfig
Esto compilará e instalará Window Maker con los parámetros por defecto.
Si quiere personalizar algunas opciones de compilación, puede hacer lo siguiente.
1. (opcional)Mire en la sección OPCIONES DE CONFIGURACIÓN para ver las
opciones disponibles. También ejecute:
./configure --help
para obtener un listado completo de otras opciones que están disponibles.
2. Ejecute configure con las opciones que quiera. Por ejemplo, si quiere
usar la opción --enable-kde, tipee:
./configure --enable-kde
3. (opcional) Edite src/wconfig.h con su editor de texto favorito y
echele un vistazo por algunas opciones que podría querer cambiar.
4. Compile. Solo tipee:
make
5. Regístrese como root (si no puede hacerlo, lea la sección "No tengo la contraseña de root" :-()
e instale Window Maker en su sistema:
su root
make install
Configuración específica del usuario
------------------------------------
Estas instrucciones no necesitan ser seguidas al actualizar Window Maker
desde una versión más antigua, a menos que se indique de otra forma en el archivo
NEWS.
Todo usuario en su sistema que desee ejecutar Window Maker debe hacer lo siguiente:
1. Instale los archivos de configuración de Window Maker en su directorio home.
Tipee:
wmaker.inst
wmaker.inst instalará los archivos de configuración de Window Maker y
configurará X para que automáticamente lance Window Maker al inicio.
Eso es todo!
Puede tipear "man wmaker" para obtener algo de ayuda general para la
configuración y otras cosas.
Lea la Guia de Usuario para una explicación más a fondo de Window Maker.
Podría querer dar una mirada a la FAQ también.
Instalando el paquete extras
----------------------------
Desempaquete WindowMaker-extra-<número-de-versión>.tar.gz en /usr/local/share
Puede obtener el archivo en ftp://ftp.windowmmaker.org. Este archivo es optativo
y solo tiene unos pocos íconos, y temas. Busque el último <número-de-versión>
disponible.
También hay un WindowMaker-extra.readme que le enseña donde vería ir ese paquete.
No tengo la contraseña de root :(
--------------------------------
Si no puede obtener privilegios de superusuario (no puede ser root) puede
instalar wmaker en su propio directorio home. Para esto, proporcione la
opción --prefix al ejecutar configure en el paso 2 de compilando Window Maker.
También necesitará proporcionar la opción --with-appspath, para especificar la ruta
para WPrefs.app. Ejemplo:
./configure --prefix=/home/jshmoe --with-appspath=/home/jshmoe/GNUstep/Apps
Luego haga /home/jshmoe/bin para que se lo incluya en su ruta de búsqueda, agregue
/home/jshmoe/lib a su variable de entorno LD_LIBRARY_PATH y ejecute bin/wmaker.inst
Por supuesto, /home/jshmoe se supone que va a ser reemplazado con la ruta a su
directorio home real.
ACTUALIZANDO
============
Si está actualizando desde una versión antigua de Window Maker:
1. Configure y compile Window Maker como siempre.
2. Instale Window Maker (pero no ejecute wmaker.inst)
3. Lea el archivo NEWS y actualice sus archivos de configuración,
si es necesario.
PROBLEMAS
=========
Cuando tenga alguno problemas durante la configuración (al ejecutar configure),
tal como no poder usar una biblioteca de formato gráfico que piensa tener instalada,
mire en el archivo config.log para obtener ideas sobre el problema.
== Error al cargar las fuentes, siempre que existan.
Intente recompilar sin el soporte NLS.
== Error al configurar
ltconfig: unrecognized option `--no-reexec'
Try `ltconfig --help' for more information.
configure: error: libtool configure failed
quite la opción --no-reexec desde aclocal.m4 y libPropList/aclocal.m4 y
reconfigure.
También asegúrese que las versiones de autoconf y automake que tenga instaladas son:
autoconf 2.13
automake 1.4
libtool 1.3
Note que ella no debe ser libtool 1.2b, debe ser libtool 1.3,
desde los sitios GNU.
== No puedo encontrar proplist.h o libPropList.something
Baje e instale libPropList desde los lugares ya citados en algún lugar
de este archivo.
== configure no detecta libtiff, u otras bibliotecas gráficas.
Elimine config.cache, luego vuelva a ejecutar configure añadiendo las siguientes
opciones a configure (entre sus otras opciones):
--with-libs-from="-L/usr/local/lib"
--with-incs-from="-I/usr/local/include -I/usr/local/include/tiff"
Sustituya las rutas donde están localizadas sus bibliotecas gráficas y sus
correspondientes archivos header. Puede colocar rutas múltiples en cualquiera de
estas opciones, como se muestra en el ejemplo de --with-incs-from . Solo coloque
un espacio entre ellas.
== configure no detecta libXpm.
* Verifique si tiene un enlace simbólico desde libXpm.so.4.9 a libXpm.so
== Segmentation fault al inicio.
* Verifique si la versión de libXPM que tiene es por lo menos la 4.7
* Verifique si tiene una versión actualizada de ~/GNUstep/Defaults/WindowMaker
Si no está seguro, intente renombrar ~/GNUstep a ~/GNUtmp y luego ejecute wmaker.inst
== "...: your machine is misconfigured. gethostname() returned (none)"
* el hostname de su máquina está definido a algo inválido, como comenzar con
un paréntesis. Haga un man hostname para obtener información acerca de como definirlo.
== El menú raíz contiene solo 2 entradas. ("XTerm" y "Exit...")
* Window Maker no está encontrando cpp (el preprocesador de C). Si su
cpp no está ubicado en /lib/cpp, edite src/config.h y corrija la ruta en
CPP_PATH.
== checking lex output file root... configure: error: cannot find output from true; giving up
* Lea la sección REQUERIMIENTOS de este archivo.
LOCALES/INTERNACIONALIZACIÓN
============================
Window Maker tiene soporte de idioma nacional. Para activar este soporte,
debe compilar Window Maker con algunos parámetros adicionales.
0 - Debe tener el paquete GNU gettext instalado. Puede obtenerse en
ftp://prep.ai.mit.edu/pub/gnu/gettext-nnn.tar.gz
Los pasos 1 al 3 pueden saltearse si usa el script Install.
1 - Debe seleccionar los idiomas que quiere soportar. Defina el
LINGUAS a la lista de locales que quiera. El Inglés siempre está
soportado. Ejemplo:
setenv LINGUAS "pt ja de"
en csh
o
export LINGUAS;LINGUAS="pt ja de"
en sh
La lista de locales soportados se pueden encontrar en po/README.
El Inglés es el idioma pr defecto.
Lea po/README si desea traducir y mantener archivos locale para otros
idiomas.
2 - Adicionalmente, si su idioma usa caracteres multi-byte, tal como
Japonés o Coreano, debe definir la opción MultiByteText a YES
en ~/GNUstep/Defaults/WMGLOBAL
3 - Configure, compile e instale Window Maker normalmente.
4 - Para seleccionar un locale particular en tiempo de ejecución debe definir la
variable de entorno LANG al locale que quiera. Por ejemplo, si quiere definir
el locale portugués, debe ejecutar
setenv LANG pt
en csh o
export LANG; LANG=pt
en Bourne sh y similares
Nota: Si tiene definida la variable de entorno LC_CTYPE, debe
indefinirla antes de ejecutar wmaker.
Window Maker busca los archivos de definición de menú en el siguiente orden:
(para portugués brasileño, en este caso):
menu.pt_BR
menu.pt
menu
5 - Si elige un idioma que usa caracteres multi-byte, debe configurar
las fuentes adecuadamente. Lea la página del manual para XCreateFontSet
para obtener más detalles sobre esto. Debe cambiar el archivo ~/G/D/Windowmaker
para las fuentes usadas en barras de título, menús y otras cosas. Para las fuentes
usadas en ventanas de diálogo, cambie ~/G/D/WMGLOBAL. El %d en los nombres de las
fuentes no debe ser quitado. Puede también usar el script wsetfont proporcionado para
esta tarea. Lea el mismo script para obtener instrucciones.
Por ejemplo, puede especificar lo siguiente en ~/G/D/WindowMaker:
WindowTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTextFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
IconTitleFont = "-*-helvetica-medium-r-normal-*-8-*,-*-*-medium-r-normal-*-12-*";
ClipTitleFont = "-*-helvetica-bold-r-normal-*-10-*,-*-*-medium-r-normal-*-12-*";
DisplayFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-12-*";
y en ~/G/D/WMGLOBAL:
SystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
BoldSystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
Las 2 fuentes de arriba son usadas únicamente por aplicaciones que usan WINGs
(WindowMaker y WPrefs.app)
El script wsetfont que se proporciona le permitirá cambiar las definiciones de fuentes
de una manera fácil. De una mirada al script para detalles de uso.
traducido por Efraín Maximiliano Palermo <max_drake2001@yahoo.com.ar>

651
INSTALL.fr Normal file
View File

@@ -0,0 +1,651 @@
Instructions pour l'installation de Window Maker
PLATEFORMES SUPPORTEES
======================
(c.a.d : j'ai entendu dire que la compilation a été réalisée avec succès sur..)
- Intel GNU/Linux Conectiva 5.9 (beta)
- Intel GNU/Linux Slackware
- Intel GNU/Linux Debian
- Intel GNU/Linux (autres)
- Sparc GNU/Linux RedHat 5.1
- PowerPC GNU/MkLinux
- Alpha GNU/Linux RedHat 5.1
- FreeBSD
- NetBSD
- OpenBSD
- BSDI 4.0
- Solaris 2.5.1, 2.5.2
- Solaris 2.6.0
- Solaris 2.7beta
- Solaris 2.8 sur Ultra Sparc 10 et E450
- SCO Unix
- SGI Irix 5.x, 6.5
- OSF/1
- HP-UX
- AIX 3.2.5
- AIX 4.1.4 / IBM PowerPC
- AIX 4.3.1 / IBM CC compiler
- AIX 4.3.2 / IBM PowerPC
- AIX 5.3
- DEC Alpha/Digital UNIX 4.x
- XFree86 / OS/2
- Corel NetWinder
- SunOS 4.x
- PowerMac / Power MachTen 4.1.1 sous MacOS
- Amiga 3000 sous RedHat Linux 5.1 (Rawhide)
- IBM S/390 sous Linux
- IBM S/390 sous Conectiva Linux (experimental)
- iBook sous Darwin
- Windows NT sous Cygwin/XFree86
- Sony PlayStation2 sous Linux
Toutes les marques déposées sont la propriété de leur propriétaire.
Tout patch qui pourrait faciliter l'adaptation à d'autres plateformes
est le bienvenu.
PRE-REQUIS
==========
Les logiciels suivants sont nécessaires à l'utilisation de Window Maker :
- X11R6.x
Window Maker peut être compilé avec des versions plus anciennes de X,
comme X11R5 (Solaris) ou X11R4 (OpenWindows), mais il ne fonctionnera
pas correctement à 100%.
Avec ces serveurs X, les icônes des applications n'apparaîtrons pas,
et vous aurez des problèmes à l'utilisation du dock. La mise à jour
des librairies côté client (Xlib, Xt, etc.) pourront améliorer les
choses si vous ne pouvez pas mettre à jour le serveur.
Les éléments suivants sont nécessaires à la compilation de Window Maker :
- pré-requis de base
Pour compiler Window Maker, assurez-vous que gcc (ou tout autre
compilateur de C ANSI) ainsi que les fichiers d'en-têtes de X sont
installés. Débutants sous Linux : vous devez installer les paquetages
de développement de X ainsi que ceux de la suite gcc. Le cas contraire,
vous ne pourrez jamais compiler aucun programme prévu pour X, y compris
Window Maker.
- autoconf, automake et libtool
Ces outils ne sont pas indispensables, mais si au moins l'un d'eux
est installé sur votre système, assurez-vous que TOUS le sont, et
que les versions de ces outils sont exactement :
autoconf 2.13
automake 1.4
libtool 1.3
Si les versions installées sur votre système différent, désactivez-les
provisoirement, par exemple en les renommant, ou en les désinstallant
de votre système. Si vous ne développez ni de compilez de logiciels,
vous n'en avez pas besoin et leur désinstallation n'est donc pas un
problème.
OPTIONNEL
=========
Ces librairies ne sont pas nécessaires pour utiliser Window Maker, mais
elles sont supportées, au cas où vous souhaiteriez les utiliser. Les
versions ci-dessous sont celles dont je dispose (et du coup, il est
garanti qu'elles fonctionnent), mais des versions différentes peuvent
fonctionner aussi bien.
- libXPM 4.7 ou plus récent
Les versions plus anciennes peuvent ne pas fonctionner !!!
Disponible sur ftp://sunsite.unc.edu/pub/Linux/libs/X/
Le support des fichiers XPM est intégré, mais il ne prendra
pas en compte les images dont le format est exotique.
- libpng 0.96 ou plus récent, et zlib
Pour pouvoir utiliser les images au format PNG.
http://www.cdrom.com/pub/png/
- libtiff 3.4 ou plus récent
Pour pouvoir utiliser les images au format TIFF.
Vous trouverez ça ici : ftp://ftp.sgi.com/graphics/tiff
- libjpeg 6.0.1 ou plus récent
Pour pouvoir utiliser les images au format JPEG.
http://www.ijg.org/
- libgif 2.2 ou libungif
Pour pouvoir utiliser les images au format GIF.
ftp://prtr-13.ucsc.edu/pub/libungif/
- libHermes 1.3.2 ou plus récent
Pour une conversion de pixels plus rapide dans la librairie wraster.
(utilisé uniquement pour des conversions spécifiques dont les modes
vidéo TrueColor)
http://www.clanlib.org/hermes/
- GNU xgettext
Si vous voulez disposer des traductions en d'autres langues, GNU gettext
est nécessaire. Les autres versions de gettext sont incompatibles et ne
fonctionneront pas.
If you want to use translated messages, you will need GNU gettext.
Other versions of gettext are not compatible and will not work.
Vous trouverez la version GNU sur ftp://ftp.gnu.org
OPTIONS DE CONFIGURATION
========================
Ces options peuvent être passées au script de configuration afin d'activer
ou désactiver des fonctionnalités de Window Maker. Par exemple :
./configure --enable-kde --enable-gnome
configurera Window Maker avec le support intégré pour KDE et GNOME.
Afin d'obtenir la liste des autres options, exécutez ./configure --help
--with-libs-from
ajoute des chemins d"accès pour la recherche des librairies.
L'option -L doit précéder chaque chemin d'accès, comme suit :
--with-libs-from="-L/opt/libs -L/usr/local/lib"
--with-incs-from
ajoute des chemins d"accès pour la recherche des fichiers d'en-tête.
L'option -I doit précéder chaque chemin d'accès, comme suit :
--with-incs-from="-I/opt/headers -I/usr/local/include"
--enable-single-icon
active le regroupement des toutes les appicons des WM_CLASS et WM_INSTANCE
en une seule icône. Aucun support n'est offert par les développeurs pour
cette fonctionnalité. Si vous avez des problèmes avec celle-ci, contactez
son auteur :
Christopher Seawood <cls@seawood.org>
--disable-shm
désactive l'utilisation de l'extension "MIT shared memory". Cela ralentira
un petit peu la génération des textures, mais il semble que cela soit
nécessaire dans certains cas pour éviter un bogue se manifestant au niveau
des icônes et des textures.
--disable-motif
désactive le support pour les fonctionnalités en rapport avec le gestionnaire
de fenêtres mwm.
--enable-openlook
désactive le support pour les fonctionnalités en rapport avec le gestionnaire
de fenêtres OPEN LOOK(tm).
--enable-gnome
désactive le support pour les fonctionnalités en rapport avec le gestionnaire
de fenêtres GNOME.
--enable-kde
désactive le support pour les fonctionnalités en rapport avec le gestionnaire
de fenêtres kde/kwm.
--enable-lite
désactive des fonctionnalités déjà prises en compte par les gestionnaires de
bureau tels que KDE et GNOME. Celà concerne : la liste de fenêtres, le menu
des applications, la sélection multiple de fenêtres. Attention : vous ne
pourrez plus sortir de Window Maker autrement qu'en utilisant kill avec le
signal SIGTERM ou en quittant à l'aide de KDE. Il n'est pas conseillé
d'utiliser cette option.
--enable-modelock
active le support pour le verrouillage du "XKB language status". Si vous ne
savez pas de quoi il retourne, c'est probablement que vous n'en avez pas
utilité.
--enable-sound
active le support pour le module de gestion des effets sonores.
--disable-xpm
désactive l'utilisation de la librairie XPM même si elle est présente
sur votre système.
--disable-png
désactive l'utilisation de la librairie PNG.
--disable-tiff
désactive l'utilisation de la librairie TIFF.
--disable-gif
désactive l'utilisation de la librairie GIF.
--disable-jpeg
désactive l'utilisation de la librairie JPEG.
--disable-shape
désactive l'utilisation de "shaped windows" (pour oclock, xeyes, etc.).
NOTES SPECIFIQUES AUX PLATEFORMES
=================================
- machines DEC/Alpha
#>>>>>>>>>>>
De : Anton Ivanov <aivanov@eu.level3.net>
A : Marcelo E. Magallon <mmagallo@debian.org>
Sujet : Re : Est-ce que le paquetage WindowMaker fonctionne correctement sur Alpha?
> Salut,
>
> Je lisais la doc contenue dans l'archive de WindowMaker, quand je suis
> tombé sur ça :
>
> | - machines DEC/Alpha
> | Il est possible que vous deviez utiliser l'option --disable-shm pour
> | configurer la compilation, comme suit :
> | ./configure --disable-shm
>
> est-ce que quelqu'un a eu des problèmes avec WindowMaker sur Alpha? Est-ce
> que quelqu'un peut tester cela? Doit-on vraiment utiliser cette option
> pour compiler sur Alpha?
Notez bien : les Alphas dont je me sers ne sont jamais sous X et ne sont pas près
de le faire.
Bien souvent, la configuration des Alphas n'inclut qu'un volume ridiculement
petit de mémoire partagée. Aussi il n'est pas étonnant qu'un grand nombre
d'applications comme cdrecord ou mysql server plantent carrément.
Vérifiez ces réglages sur votre système et modifiez-les en conséquent :
pour cela, manipulez l'entrée appropriée dans /proc ou modifiez le fichier
/usr/src/linux/include/asm/shmparam.h.
En dehors de ce cas, la mémoire partagée sous Alpha est sensée ne pas
poser de problème et je ne vois aucune raison de la désactiver.
Pour ma part, elle est à 32 ou plus sur la pluspart des machines.
De plus, si ma mémoire est exacte, les commentaires dans ce fichier
sont tout à fait inexacts. La valeur n'est pas exprimée en octets, mais en
mots, dépendant de la machine. Pour les Alphas, c'est donc *8.
Je rappelle que je n'utilise pas X sur ces machines, donc ce que j'indique
est soumis à toutes les réserves habituelles. (#include "standard_disclaimer.h")
#<<<<<<<<<<<<
- SCO Unix
Lancez configure comme suit :
CFLAGS="-belf -DANSICPP" ./configure
- SunOS, Solaris
Si gcc est installé, lancez configure comme suit :
CPP_PATH="gcc -E -x c" ./configure
Le cpp de Sun ne dispose pas de certaines fonctionnalités nécessaire pour
Window Maker et cela peut occasionner des problèmes avec l'utilisation des
fichiers de configuration.
Il peut être aussi nécessaire d'indiquer le chemin d'accès à la librairie
libtiff en utilisant les options --with-libs-from et --with-incs-from
avec configure.
Quelqu'un m'a rapporté qu'il est nécessaire de faire figurer /usr/local/lib
en premier dans la variable d'environnement LD_LIBRARY_PATH.
Si vous utilisez un Ultra Creator 3D ou une autre machine graphique
de haut niveau, faites en sorte de démarrer le serveur X avec le mode
graphique par défaut à 24bpp sinon vous pourriez constaer des problèmes
au niveau des couleurs.
C'est une bogue répertorié au niveau de Window Maker, il sera corrigé.
- GNU/Linux en général
Assurez-vous que /usr/local/lib figure dans /etc/ld.so.conf et que vous
avez lancé ldconfig après l'installation.
Désinstallez tout précédent paquetage de Window Maker avant d'installer
une nouvelle version.
- RedHat GNU/Linux
Il peut y avoir plusieurs problèmes ennuyeux sur les systèmes RedHat.
Voici la marche à suivre sous peine de ne pouvoir utiliser Window Maker
sur ces systèmes :
* si la version de Window Maker livrée avec RedHat est installée,
désinstallez-la avant de mettre à jour votre système;
* assurez-vous que ni la variable d'environnement LANG ni LINGUAS ne
contiennent "en_RN";
* vérifiez que /usr/local/bin est présent dans votre variable d'environnement
PATH;
* il faut que /usr/local/lib soit dans /etc/ld.so.conf avant de lancer
ldconfig;
* si vous rencontrez des messages d'erreur en rapport avec "--no-reexec",
désinstallez libtool-1.2b et installez libtool-1.3.
libtool-1.3 peut être trouvé sur ftp.gnu.org.
Consultez aussi la section PROBLEMES;
* si vous aviez auparavant installé le paquetage de Window Maker livré
avec RedHat et que vous voulez installer maintenant manuellement une nouvelle
version, vous devez au préalable désinstaller le paquetage provenant de la
RedHat;
* assurez-vous qu'il existe un lien symbolique de from /usr/include/X11 vers
/usr/X11R6/include/X11 (le cas échéant, lancez cette commande :
ln -s /usr/X11R6/include/X11 /usr/include/X11);
* assurez-vous que /lib/cpp pointe bien vers le programme cpp
Si vous avez un doute concernant quoi que ce soit de relatif à l'installation
de Window Maker sur une RedHat, n'hésitez pas à contacter le support
utilisateur de RedHat. Ils vous renseigneront toujours et tenteront de vous
dépanner dans l'utilisation et la configuration de votre système RedHat.
D'un autre côté, ils sont plus au fait que nous pour tout ce qui est relatif
aux RedHat (nous n'en utilisons pas).
- PowerPC MkLinux
Installez la version la plus récente de Xpmac. Les versions plus
anciennes semblent contenir un bogue qui est susceptible de bloquer
le système.
- Debian GNU/Linux
Si vous voulez bénéficier du support des fichier JPEG et TIFF,
assurez-vous que les paquetages libtiff-dev et libjpeg-dev sont installés.
- SuSE GNU/Linux
Désinstallez tout précédent paquetage de Window Maker avant d'installer
une nouvelle version. Le cas échéant, vous pourriez rencontrer des
problèmes.
- MetroX (version indéterminée)
MetroX contient un bogue qui corrompt les pixmaps utilisées en fond
de fenêtres. Si vous utilisez MetroX et rencontrer des problèmes
avec les textures, n'utilisez pas les textures dans les barres de titre,
ou bien utilisez un autre serveur X.
INSTALLATION
============
Compiler Window Maker
---------------------
Pour aller vite, tapez ce qui suit sous un prompt shell :
./configure
make
puis, loguez-vous en tant que root and tapez :
make install
ldconfig
ou, si vous voulez ôter les infos de débogage des exécutables et les
rendre plus petits, tapez plutôt :
make install-strip
ldconfig
Tout ceci compile et installe Window Maker avec les réglages par défaut.
Maintenant, si vous voulez personnaliser des options de compilation, vous
pouvez faire :
1. (optionnel) Consulter la section OPTIONS DE CONFIGURATION
dans ce même fichier. Exécutez aussi :
./configure --help
pour avoir la liste des autres options disponibles.
2. Lancez configure avec les options choisies. Par exemple, si vous voulez
utiliser l'option --enable-kde, tapez :
./configure --enable-kde
3. (optionnel) Editez src/wconfig.h avec votre editeur de texte favori et
et modifiez sont contenu à votre guise.
4. Compilez. Il faut juste taper :
make
5. Loguez-vous en tant que root (si vous ne pouvez pas le faire, lisez le
paragraphe "Je n'ai pas le mot de passe de root :-(") et installez
Window Maker sur votre système :
su root
make install
Réglages pour un utilisateur
----------------------------
Ces instructions suivantes ne sont pas nécessaires si vous mettez à jour
Window Maker à partir d'une version plus ancienne, à moins que ce soit
précisé dans le fichier NEWS.
Chaque utilisateur qui veut utiliser Window Maker sur votre système doit
faire ce qui suit :
1. Installer les fichiers de configuration de Window Maker dans son
répertoire personnel.
Pour ceci, il doit taper :
wmaker.inst
wmaker.inst installera les fichiers de configuration de Window Maker
pour l'utilisateur et configurera ses paramètres de X de façon à ce que
Window Maker soit automatiquement lancé au démarrage de X.
C'est tout!
Vous pouvez aussi taper "man wmaker" afin d'obtenir plus de renseignements
sur la configuration et d'autres sujets.
Consultez le Guide de l'utilisateur afin d'obtenir des informationss plus
en détail sur Window Maker.
Pourquoi ne pas aussi jeter un oeil aux FAQs..
Installation du paquetage additionnel
-------------------------------------
Décompressez WindowMaker-extra-<version-number>.tar.gz dans /usr/local/share
Vous trouverez le fichier sur ftp://ftp.windowmaker.org. Ce paquetage est optionnel,
il contient des icônes et des thèmes supplémentaires. Vérifiez que vous avez
bien la derniere version de ce paquetage.
Il y a aussi un fichier WindowMaker-extra.readme qui indique comment procéder à
l'installation de ce paquetage.
Je n'ai pas le mot de passe de root :-(
---------------------------------------
Si vous n'avez pas acc-s aux privilèges du super-utilisateur (root), vous pouvez
installer Window Maker dans votre répertoire personnel. Pour ce faire, ajoutez
l'option --prefix correctement renseignée au moment de l'exécution de ./configure
(étape 2 de la compilation de Window Maker).
Il est aussi nécessaire d'utiliser l'option --with-appspath, afin de préciser
le chemin d'accès à WPrefs.app. Par exemple :
./configure --prefix=/home/jshmoe --with-appspath=/home/jshmoe/GNUstep/Apps
Puis, faites en sorte que /home/jshmoe/bin soit inclus dans votre PATH, ajoutez
/home/jshmoe/lib à votre variable d'environnement LD_LIBRARY_PATH puis lancez
bin/wmaker.inst
Bien sûr, /home/jshmoe est supposé être remplacé par votre répertoire personnel.
MISE A JOUR
===========
Si vous mettez à jour une version plus ancienne de Window Maker :
1. Configurez et compilez Window Maker comme d'habitude
2. Installez Window Maker (mais n'exécutez pas wmaker.inst)
3. Consultez le fichier NEWS et mettez à jour vos fichiers de configuration
si nécessaire.
PROBLEMES
=========
Si vous rencontrez des problèmes pendant la phase de configuration, comme par
exemple l'impossibilité d'utiliser une librairie de manipulation de format
graphique alors que vous pensez qu'elle est installée, jetez un oeil au contenu
du fichier config.log, vous y trouverez peut-être des indices pour résoudre
ce problème.
== erreur de chargement de polices, même si elles existent
Essayez de recompiler sans le support pour le NLS.
== erreur à la configuration
ltconfig: unrecognized option `--no-reexec'
Try `ltconfig --help' for more information.
configure: error: libtool configure failed
Otez l'option --no-reexec du fichier aclocal.m4 et relancer la configuration.
Assurez vous aussi que les versions d'autoconf et d'automake correspondent bien
aux pré-requis :
autoconf 2.13
automake 1.4
libtool 1.3
Notez bien que ce ne doit PAS être libtool 1.2b, mais libtool bien 1.3,
disponible sur les sites GNU.
== configure ne trouve pas libtiff ou une autre librairie graphique
Effacez le fichier config.cache, et exécutez à nouveau configure avec les options
suivantes (en plus des options que vous utilisiez déjà) :
--with-libs-from="-L/usr/local/lib"
--with-incs-from="-I/usr/local/include -I/usr/local/include/tiff"
Insérez les chemins d'accès aux librairies graphiques et à leurs fichiers d'en-tête.
Plusieurs chemins d'accès peuvent être ajoutés pour chacune de ces options,
comme montré pour --with-incs-from. Séparez-les juste par un espace.
== configure ne trouve pas libXpm
* Vérifiez que vous avez un lien sympbolique de libXpm.so.4.9 vers libXpm.so
== segmentation fault au démarrage
* Vérifiez que la version de libXPM qui est installée est au moins 4.7.
* Vérifiez que votre fichier ~/GNUstep/Defaults/WindowMaker est à jour.
Si vous n'en êtes pas sûr, renommez ~/GNUstep en ~/GNUtmp et lancez wmaker.inst.
== "...: your machine is misconfigured. gethostname() returned (none)"
* Le nom d'hôte de votre machine n'est pas indiqué ou est invalide (il commence
par une parenthèse par exemple). Consultez les pages du manuel (man hostname) pour
savoir comment le positionner correctement.
== Le menu des applications ne contient que 2 entrées ("XTerm" et "Exit...")
* Window Maker ne trouve pas cpp (le preprocesseur de C). Si votre cpp n'est pas situé
dans /lib/cpp, editez src/config.h et modifiez le chemin d'accès dans CPP_PATH en conséquent.
== checking lex output file root... configure: error: cannot find output from true; giving up
* Consultez la section PRE-REQUIS dans ce même fichier.
LOCALES/INTERNATIONALISATION
============================
Window Maker supporte les langues étrangères. Pour activer cette fonctionalité,
vous devez compiler Window Maker avec des paramètres supplémentaires.
0 - GNU gettext doit être installé. Il peut être trouvé ici :
ftp://prep.ai.mit.edu/pub/gnu/gettext-nnn.tar.gz
Vous pouvez passer à l'étape 4 si vous utilisez le script Install.
1 - Il vous faut choisir les langues que vous voulez rendre disponible. Modifiez
pour cela la liste des codes de nationalité dans LINGUAS. L'anglais est inclus
de façon implicite dans cette liste. Par exemple :
setenv LINGUAS "pt ja de"
sous csh
ou
export LINGUAS;LINGUAS="pt ja de"
sous sh
La liste de tous les codes de nationalité peut être trouvée dans po/README.
L'anglais est la langue par défault.
Lisez po/README si vous souhaitez traduire ou maintenir les fichiers propres
à d'autres adaptations nationales.
2 - De plus, si votre langue utilise des caractères multi-octets, comme
le japonais ou le coréen, vous devez vous assurer que l'option MultiByteText est à YES
dans ~/GNUstep/Defaults/WMGLOBAL.
3 - Configurez, compilez et installez Window Maker normalement.
4 - Pour choisir une langue particulière à l'exécution, vous devez positionner la variable
d'environnement LANG avec la valeur correspondant au code de nationalité adéquat.
Par exemple, si vous voulez utiliser le portugais, vous devez faire :
setenv LANG pt
sous csh ou
export LANG; LANG=pt
sous Bourne sh et apparentés
Note : si la variable d'environnement LC_CTYPE est positionnée, vous devez l'ôter de
l'environnement (unset LC_CTYPE), avant d'exécuter Window Maker.
En ce qui concerne les fichiers de configuration des menus, Window Maker procède
à une recherche suivant cet ordre (pour le portugais brésilien, dans ce cas) :
menu.pt_BR
menu.pt
menu
5 - Si vous choisissez une langue qui utilise les caractères multi-octets, vous
devez configurer les polices de façon adéquate. Consultez pour cela les pages
de manuel de XCreateFontSet. Vous devez modifier dans votre fichier ~/G/D/WindowMaker
les polices utilisées dans les titres, menus et autres. En ce qui concerne les polices
utilisées dans les boîte de dialogue, modifiez ~/G/D/WMGLOBAL.
Le %d dans la définition des polices ne doit PAS être enlevé. Vous pouvez aussi utiliser
le script wsetfont, fourni à ces fins.
Consultez le script lui-même pour en connaître les instructions.
Par exemple, vous pouvez mettre ceci dans ~/G/D/WindowMaker :
WindowTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTextFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
IconTitleFont = "-*-helvetica-medium-r-normal-*-8-*,-*-*-medium-r-normal-*-12-*";
ClipTitleFont = "-*-helvetica-bold-r-normal-*-10-*,-*-*-medium-r-normal-*-12-*";
DisplayFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-12-*";
et dans ~/G/D/WMGLOBAL :
SystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
BoldSystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
Les 2 polices ci-dessus sont uniquement utilisées par les applications qui utilisent
WINGs (Window Maker et WPrefs.app).
Le script wsetfont inclus vous permettra de changer les réglages des polices de
façon plus aisée. Consultez-le afin d'obtenir plus d'informations.

566
INSTALL.pt Normal file
View File

@@ -0,0 +1,566 @@
Instruções de Instalação do Window Maker
PLATAFORMAS SUPORTADAS
======================
(obs: fiquei sabendo que conseguiram compilar nesses sistemas...)
- Intel GNU/Linux Slackware 3.5 (plataforma primária)
- outras distribuições do Intel GNU/Linux
- Sparc GNU/Linux RedHat 5.1
- PowerPC GNU/MkLinux
- Alpha GNU/Linux RedHat 5.1
- FreeBSD
- NetBSD
- OpenBSD
- BSDI 4.0
- Solaris 2.5.1, 2.5.2
- Solaris 2.6.0
- Solaris 2.7beta
- SCO Unix
- SGI Irix 5.x, 6.5
- OSF/1
- HP-UX
- AIX 3.2.5
- AIX 4.1.4 / IBM PowerPC
- AIX 4.3.1 / IBM CC compiler
- AIX 4.3.2 / IBM PowerPC
- AIX 5.3
- DEC Alpha/Digital UNIX 4.x
- XFree86 / OS/2
- Corel NetWinder
- SunOS 4.x
- PowerMac / Power MachTen 4.1.1 em MacOS
- Amiga 3000 rodando RedHat Linux 5.1 (Rawhide)
Patches que possibilitem a execução em outras plataformas serão bem-vindos.
Se a última versão não funcionou para você, tente a 0.53.0,
que é conhecida por ser bastante estável em várias plataformas.
REQUERIMENTOS
=============
Os softwares a seguir são necessários para o uso do Window Maker:
- X11R6.x
O Window Maker pode ser compilado em versões mais antigas do X, como X11R5
(Solaris) ou X11R4 (OpenWindows) mas não funcionará 100% corretamente. Em
tais servidores não existirão ícones de aplicações e você terá problemas
usando o dock. Fazer upgrades das bibliotecas (Xlib Xt etc) ajudará se você
não pode fazer upgrade do servidor.
Para compilar o Window Maker você precisará do seguinte:
- Requerimentos básicos e óbvios
Se você vai compilar o Window Maker, tenha certeza de que você possui o gcc
(ou outro compilador ANSI) e os arquivos headers do X. Especialmente para
os iniciantes em Linux: você deve instalar todos os pacotes de desenvolvimento
do X e a suite gcc. Do contrário você não será capaz de compilar nenhum
programa X, incluindo o Window Maker.
- libPropList
Você pode achar esta biblioteca em ftp://ftp.windowmaker.org/pub/libs ou
ftp://ftp.gnome.org/pub/libPropList. Você deve instalar corretamente
esta biblioteca antes de instalar o Window Maker.
- autoconf, automake and libtool
Estes pacotes não são necessários, mas se você tiver um ou mais deles instalados,
verifique se todos eles são das seguintes versões:
autoconf 2.13
automake 1.4
libtool 1.3
Se você possui uma versão diferente, desative-os mudando os nomes dos arquivos
para outra coisa ou removendo-os do seu sistema. Se você não desenvolve
software você não precisa deles, logo, você pode desinstalá-los com segurança.
- lex (ou flex) e yacc (ou bison)
São usados pelo libPropList. O lex não seria necessário, já que o seu
arquivo de saída é incluído, mas como ou eu ou o automake é um pouco
burro, o script de configuração para o libPropList simplesmente
abortará sem motivo caso o lex não seja achado.
OPCIONAL:
=========
Estas bibliotecas não são necessárias para que o Window Maker funcione, mas elas
são suportadas caso você deseje usá-las. Os números das versões são os que eu
possuo (e portanto quase certamente funcionarão), mas outras versões devem funcionar
também.
- libXPM 4.7 ou mais atual
Versões antigas podem não funcionar.
Disponível em ftp://sunsite.unc.edu/pub/Linux/libs/X/
Há suporte nativo para arquivos XPM, mas ele não carregará imagens em
algumas formatos incomuns.
- libpng 0.96 ou mais atual e zlib
Para suporte a imagens PNG.
- libtiff 3.4 ou mais atual
Para suporte a imagens TIFF. Você pode baixar o libtiff em
ftp://ftp.sgi.com/graphics/tiff.
- libjpeg 6.0.1 ou mais atual
Para suporte a imagens JPEG.
- libgif 2.2 ou libungif
Para suporte a imagens tipo GIF.
- GNU xgettext
Se você deseja usar mensagens traduzidas, será necessário o GNU gettext. Outras
versões do gettext não são compatíveis e não funcionarão. Baixe a versão
GNU através do site ftp://ftp.gnu.org
A maioria dos pacotes citados pode ser encontrado em ftp.uu.net/pub/graphics
OPÇÕES DE CONFIGURAÇÃO
======================
Estas opções podem ser passadas ao script de configuração para ativar/desativar algumas
opções do Window Maker. Exemplo:
./configure --enable-kde --enable-gnome
irá configurar o Window Maker para que seja compilado com suporte ao KDE e GNOME.
Para obter uma lista com outras opcoes, execute ./configure --help:
--with-libs-from
Especifica diretórios (paths) adicionais onde se deve achar as bibliotecas.
A flag -L deve preceder cada caminho, tal como:
--with-libs-from="-L/opt/libs -L/usr/local/lib"
--with-incs-from
Especifica diretórios adicionais para os arquivos de cabeçalho (header files)
que serão procurados. A flag -l deve preceder cada caminho descrito, tal como:
--with-incs-from="-I/opt/headers -I/usr/local/include"
--enable-single-icon
Permite o agrupamento de todas as aplicações com a mesma WM_CLASS+WM_INSTANCE em
uma só. Esta opção não é suportada por todos os desenvolvedores. Se você tiver algum
problema com essa opção, escreva para o seu autor: Christopher Seawood
<cls@seawood.org>
--disable-shm
Desativa o uso da extensão de memória compartilhada do MIT. Isto reduzirá
um pouco a geração de texturas, mas em alguns casos se mostrará necessário
em virtude de um bug que se manifesta quando manipulam-se ícones e texturas.
--disable-motif
Desativa compatibilidade com gerenciador de janelas mwm.
--enable-openlook
Ativa compatibilidade com gerenciador de janelas OPEN LOOK(tm).
--enable-gnome
Ativa compatibilidade com gerenciador de janelas GNOME.
--enable-kde
Ativa compatibilidade com gerenciador de janelas kde/kwm.
--enable-lite
Remove coisas que já são suportadas em ambientes desktops como o KDE
e o GNOME. As opções desativadas são: lista de janelas (window list), menu de
aplicações root (root applications menu), seleção múltipla de janelas
(multiple window selection). Note que não será mais possível sair do Window
Maker de dentro; você terá que usar o kill com o sinal SIGTERM ou sair do KDE.
Não é aconselhado ativar essa opção.
--enable-modelock
Suporte ao bloqueio de status de linguagem do XKB. Se você não sabe o que
é isto, você provavelmente não precisa.
--enable-sound
Ativa o suporte ao módulo de efeitos sonoros.
--disable-xpm
Desativa o uso da biblioteca XPM mesmo se esta estiver disponível no seu sistema.
--disable-png
Desativa o uso da biblioteca PNG
--disable-tiff
Desativa o uso da biblioteca TIFF
--disable-gif
Desativa o uso da biblioteca GIF
--disable-jpeg
Desativa o uso da biblioteca JPEG
--disable-shape
Desativa o uso das shaped windows (para oclock, xeyes etc.).
--enable-debug
Não use esta opção a não ser que saiba realmente o que está fazendo
NOTAS ESPECÍFICAS PARA AS PLATAFORMAS
=====================================
- máquinas DEC/Alpha
Você provavelmente precisará usar a flag --disable-shm para configurar,
como ./configure --disable-shm
- SCO Unix - execute o configure tal como
CFLAGS="-belf -DANSICPP" ./configure
- SunOS, Solaris
Se você possui o gcc instalado, execute o configure como abaixo:
CPP_PATH="gcc -E -x c" ./configure
O cpp da Sun não possui agumas funções necessárias ao Window Maker e pode
causar problemas quando analisados os arquivos de configuração.
Você pode ainda precisar usar --with-libs-from e --with-incs-from
para fornecer o diretório onde a libtiff está localizada.
Alguem me mandou um email dizendo que você precisará deixar o /usr/local/lib
como primeiro caminho (path) no LD_LIBRARY_PATH para que funcione.
Se você tem uma Ultra Creator 3D ou outra máquina com gráficos high-end,
certifique-se de iniciar o servidor X com o visual padrão definido em 24bpp
ou você poderá ter problemas com cores desfiguaradas. Isto é um bug do
wmaker e será consertado.
- GNU/Linux em geral
Confira se você possui /etc/local/lib no /etc/ld.so.conf e rode ldconfig
após a instalação.
Remova qualquer versão em pacote do Window Maker antes de instalar uma versão
mais atual.
- RedHat GNU/Linux
Os sistemas RedHat apresentam vários incômodos. Se você usa, certifique-se
de seguir os passos abaixo ou o Window Maker não funcionará:
* se você instalou o Window Maker que vem junto com o Red Hat, desinstale-o
antes de instalar uma versão mais atual.
* certifique-se de que você não possui as variáveis de ambiente LANG e LINGUAS
configuradas como en_RN;
* certifique-se de que você possui /usr/local/bin na variável PATH;
* certifique-se de que você tem /usr/local/lib no /etc/ld.conf.so antes de
executar o ldconfig;
* se você tiver problemas que mencionem uma mensagem de erro com o
--no-reexec, remova a libtool-1.2b e instale a libtool-1.3. A libtool-1.3
pode ser encontrada em ftp.gnu.org. Também leia a seção TROUBLESHOOTING;
* se você instalou o pacote Window Maker do RedHat e está instalando uma
nova versão na mão (você mesmo está compilando), remova o pacote Window
Maker do seu sistema RedHat antes.
* certifique-se de que você possua o vínculo simbólico do /usr/include/X11
ao /usr/X11R6/include/X11 (se não, digite ln -s /usr/X11R6/include/X11
/usr/include/X11)
* certifique-se de que você tem o /lib/cpp apontando para o programa cpp.
Se você possui alguma dúvida quanto a realizar qualquer uma das tarefas acima,
por favor não hesite em contatar o suporte ao usuário RedHat. Eles gentilmente
irão responder a todas as suas dúvidas relacionadas ao sistema. Eles sabem
muito mais sobre o sistema deles do que nós (nós não usamos RedHat).
- PowerPC MkLinux
Você terá que possuir a última versão do Xpmac. Versões mais antigas
parecem ter bugs que fazem com que o sistema trave.
- Debian GNU/Linux
Se você deseja suporte a JPEG e TIFF, certifique-se que no seu sistema estão
instaladas as bibliotecas libtiff-dev e libjpeg-dev.
- SuSE GNU/Linux
Se você instalou o pacote Window Maker do SuSE, certifique-se de
removê-lo do seu sistema antes de compilar o wmaker ou você poderá
ter problemas.
- MetroX (versão desconhecida)
O MetroX possui uma falha que corrompe os pixmaps que são definidos
como backgrounds de janelas. Se você usa MetroX e está tendo problemas
estranhos com texturas, não use texturas nas titlebars. Ou use
um servidor X diferente.
INSTALAÇÃO:
===========
Desempacote o WindowMaker-extra-<numero-da-versao>.tar.gz no /usr/local/share.
Você pode pegar o arquivo no site ftp://ftp.windowmaker.org. Este arquivo
é opcional e possui alguns ícones e temas. Procure pelo último <número-da-versão>
disponível.
Ainda há o WindowMaker-extra.readme para instruí-lo sobre onde o pacote deve ir.
Compilando o Window Maker
-------------------------
Se você quer fazer de modo rápido e simples, digite o seguinte no seu prompt:
./configure
make
depois entre como root e digite:
make install
ldconfig
ou se você quiser remover os símbolos de depuração dos seus binários para
que eles se tornem menores, você pode digitar:
make install-strip
ldconfig
Estes comandos irão compilar e instalar o Window Maker com parâmetros padrões.
Se você deseja configurar algumas opções de compilação, você pode fazer o seguinte:
1.(opcional) Olhe na seção OPÇÕES DE CONFIGURAÇÃO acima para ver as
opções disponíveis. Execute também:
./configure --help
para obter uma lista completa das outras opções.
2. Rode o configure com as opções que você deseja. Por exemplo, se
deseja usar a opção --enable-kde, você deve digitar:
./configure --enable-kde
3. (opcional) Edite o arquivo src/wconfig.h com seu editor de texto
preferido e procure por alguma opção que deseja mudar
4. Compile. Só digite:
make
5. Entre como root (se você não pode fazer isso, leia a seção "Eu não tenho a
senha de root") e instale o Window Maker no seu sistema:
su root
make install
Configurações Específicas
-------------------------
Estas instruções não precisam ser seguidas quando for feito o upgrade do
Window Maker em cima de uma versão antiga, a menos que o arquivo NEWS diga
algo diferente.
Todo usuário no seu sistema que desejar rodar o Window Maker deverá fazer o seguinte:
1. Instalar os arquivos de configuração do Window Maker no diretório home.
Digite:
wmaker.inst
wmaker.inst vai instalar os arquivos de configuração do Window Maker e fazer
com que o X rode o Window Maker quando executado.
É isso!
Você pode digitar "man wmaker" para ver uma ajuda geral sobre configuração
e outras coisas.
Leia o Manual do Usuário para explicações mais profundas sobre o Window Maker.
Você deve dar uma olhada no FAQ também.
Eu não tenho a senha de root
----------------------------
Se você não pode obter privilégios de super-usuário (não pode ser root) você
pode instalar o wmaker no seu diretório home. Para isso, forneça a opção
--prefix quando for rodar o configure, como explicado no passo 2 da seção
Compilando o Window Maker.
Você ainda precisará fornecer a opção --with-appspath, para especificar o
caminho do WPrefs.app. Exemplo:
./configure --prefix=/home/jshmoe --with-appspath=/home/jshmoe/GNUstep/Apps
Depois faça com que /home/jshome/bin seja incluído na variável PATH, adicione
/home/jshome/lib na variável de ambiente LD_LIBRARY_PATH e rode bin/wmaker.inst
É claro, substitua /home/jshome com o seu diretório home.
UPGRADE
=======
Se você está fazendo um upgrade de uma versão antiga do Window maker:
1. Configure e compile o Window Maker como sempre
2. Instale o Window Maker (mas não rode o wmaker.inst)
3. Leia o arquivo NEWS e atualize seus arquivos de configuração,
se necessário.
TROUBLESHOOTING
===============
Quando você tiver problemas na configuração (enquanto roda o configure),
tal como não conseguir usar uma biblioteca de gráficos que você acha que tem
instalada, olhe no arquivo config.log para obter dicas sobre o que pode estar
errado.
== Erro ao carregar as fontes, mesmo quando elas existem
Tente reconstruir sem suporte NLS.
== Erro ao configurar
ltconfig: unrecognized option `--no-reexec'
Try `ltconfig --help' for more information.
configure: error: libtool configure failed
remova a opção --no-reexec do aclocal.m4 e da libPropList/aclocal.m4
e reconfigure.
Também verifique se as versões do autoconf e do automake que você tem
instaladas são:
autoconf 2.13
automake 1.4
libtool 1.3
Note que não deve ser libtool 1.2b, deve ser libtool 1.3.
== Não acha a proplist.h ou libPropList.algumacoisa
Baixe e instale a libPropList dos sites já citados neste arquivo.
== o configure não detecta a libtiff, ou outras bibliotecas gráficas.
Delete o config.cache, depois rode de novo o configure adicionando as
seguintes opções ao configure (e as outras opções que você usa):
--with-libs-from="-L/usr/local/lib"
--with-incs-from="-I/usr/local/include -I/usr/local/include/tiff"
Substitua o caminho para onde estão localizadas as suas bibliotecas gráficas
e os correspondentes arquivos de cabeçalho. Você pode colocar caminhos múltiplos
em qualquer uma dessas opções, como no exemplo do --with-incs-from. Só ponha um
espaço entre eles.
== o configure não detecta libXpm.
* Confira se você possui um vínculo simbólico da libXpm.so.4.9 para libXpm.so
== Segmentation fault na inicialização
* Confira se a versão da libXPM é a 4.7 ou mais atual
* Confira se você tem uma versão atualizada do ~/GNUstep/Defaults/WindowMaker
Se você não tem certeza, tente renomear ~/GNUstep para ~/GNUtmp e depois rode
o wmaker.inst
== "...: your machine is misconfigured. gethostname() returned (none)"
* o hostname da sua máquina está definido incorretamente. Execute um man hostname
para obter informações de como resolver isto.
== O menu do root possui só 2 entradas. ("XTerm" e "Exit...")
* O Window Maker não está achando o cpp (o pré-processador C). Se o seu cpp
não está localizado em /lib/cpp, edite src/config.h e corrija o caminho
no CPP_PATH.
== checking lex output file root... configure: error: cannot find output from
true; giving up
* Leia a seção REQUERIMENTOS deste arquivo.
LOCALES/INTERNACIONALIZAÇÃO
===========================
o Window Maker tem suporte a linguagem nacional. Para ativar esse suporte,
você precisa compilar o Window Maker com parâmetros adicionais.
0 - Você deve Ter o pacote do GNU gettext instalado. Este pode ser obtido
pelo ftp://prep.ai.mit.edu/pub/gnu/gettext-nnn.tar.gz
Os passos 1,2 e 3 podem ser pulados se você usa o script Install.
1 - Você deve selecionar as linguagens que deseja suportar. Defina a LINGUAS
para a lista dos locales que você deseja. O Inglês é sempre suportado. Exemplo:
setenv LINGUAS "pt ja de"
na csh
ou
export LINGUAS;LINGUAS="pt ja de"
na sh
A lista dos locales suportados pode ser achado no arquivo po/README.
O inglês é a língua oficial.
Leia o arquivo po/README se você deseja traduzir e manter os arquivos
locales para outras linguagens.
2 - Adicionalmente, se a sua linguagem usa caracteres multi-bytes, tais
como as línguas japonesas e koreanas, você deve definir a opção MultiByteText
para YES nos arquivos ~/GNUstep/Defaults/WMGLOBAL e ~/GNUstep/Defaults/WindowMaker
3 - Configure, compile e instale o Window Maker normalmente.
4 - Para selecionar um locale particular você deve definir a variável de
ambiente LANG para o locale que você quer. Por exemplo, se você quer definir o
locale português, você deve rodar
setenv LANG pt
na csh ou
export LANG; LANG=pt
nas Bourne sh e similares
Nota: Se você tem a variável de ambiente LC_CTYPE definida, você deve
indefiní-la antes de rodar o wmaker.
O Window Maker procura os arquivos de definições de menu na seguinte
ordem (para o português brasileiro, neste caso):
menu.pt_BR
menu.pt
menu
5 - Se você escolheu uma linguagem que usa caracteres multi-bytes, você
deve configurar as fontes adequadamente. Leia a página de manual para o
XcreateFontSet para obter mais detalhes sobre isto. Você deve mudar o arquivo
~/G/D/WindowMaker para as fontes usadas nas barras de título, menus e
outras coisas. Para as fontes usadas nas janelas de diálogo, mude o arquivo
~/G/D/WMGLOBAL. O %d no font names não deve ser removido. Você pode ainda usar
o wsetfont script para esta tarefa. Leia o próprio script para maiores instruções.
Por exemplo, você pode especificar o seguinte no ~/G/D/WindowMaker:
WindowTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTextFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
IconTitleFont = "-*-helvetica-medium-r-normal-*-8-*,-*-*-medium-r-normal-*-12-*";
ClipTitleFont = "-*-helvetica-bold-r-normal-*-10-*,-*-*-medium-r-normal-*-12-*";
DisplayFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-12-*";
e no ~/G/D/WMGLOBAL:
SystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
BoldSystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
As duas fontes acima são usadas somente por aplicações que
usem WINGs (o Window Maker e WPrefs.app)
O script wsetfont que é fornecido vai permitir com que você mude as
definições de fonte do modo mais fácil. Dê uma olhada no script para maiores
detalhes sobre o uso.
Traduzido por Ricardo Sartori <sartori@inf.ufsc.br>

610
INSTALL.sk Normal file
View File

@@ -0,0 +1,610 @@
In¹trukcie pre in¹taláciu Window Makera
PODPOROVANÉ PLATFORMY
=====================
(tzn: vraj to na tom niekto skompiloval...)
- Intel GNU/Linux Conectiva 5.9 (beta)
- Intel GNU/Linux Slackware
- Intel GNU/Linux Debian
- Intel GNU/Linux other distributions
- Sparc GNU/Linux RedHat 5.1
- PowerPC GNU/MkLinux
- Alpha GNU/Linux RedHat 5.1
- FreeBSD
- NetBSD
- OpenBSD
- BSDI 4.0
- Solaris 2.5.1, 2.5.2
- Solaris 2.6.0
- Solaris 2.7beta
- SCO Unix
- SGI Irix 5.x, 6.5
- OSF/1
- HP-UX
- AIX 3.2.5
- AIX 4.1.4 / IBM PowerPC
- AIX 4.3.1 / IBM CC compiler
- AIX 4.3.2 / IBM PowerPC
- AIX 5.3
- DEC Alpha/Digital UNIX 4.x
- XFree86 / OS/2
- Corel NetWinder
- SunOS 4.x
- PowerMac / Power MachTen 4.1.1 over MacOS
- Amiga 3000 running RedHat Linux 5.1 (Rawhide)
- IBM S/390 running Linux
- iBook running Darwin
Patche na rozbehanie na iných platformách sú vítané.
PO®IADAVKY:
===========
Nasledovný softvér je potrebný pre beh Window Makera:
- X11R6.x
Window Maker mô¾e by» skompilovaný na star¹ích verziách X, ako
X11R5 (Solaris) alebo X11R4 (OpenWindows) ale nebude pracova»
100% korektne. Na takých serveroch nebudú ikony aplikácií a budete
ma» problémy s pou¾ívaním doku. Upgrade klientských kni¾níc (Xlib,
Xt, atï.) pomô¾e, ak u¾ nemô¾ete spravi» upgrade servera.
Nasledovné je potrebné k skompilovaniu Window Makera:
- Základné be¾né veci
Ak chcete kompilova» Window Maker, uistite sa, ¾e máte gcc (alebo
iný ANSI C kompilátor) a hlavièkové súbory iXov. Hlavne pre zaèia-
toèníkov v Linuxe: musíte nain¹talova» v¹etky X-devel balíky a gcc.
Inak nebudete schopní skompilova» ¾iadny program pre X, teda ani
Window Maker.
- libPropList
Túto kni¾nicu mo¾no nájs» na ftp://ftp.windowmaker.org/pub/libs alebo
ftp://ftp.gnome.org/pub/libPropList. Nain¹talujte ju pred kompiláciou
Window Makera.
- autoconf, automake a libtool
Tieto nástroje NIE sú potrebné, ale ak máte niektoré z nich nain¹talo-
vané, uistite sa, ¾e V©ETKY sú presne nasledovné verzie:
autoconf 2.13
automake 1.4
libtool 1.3
Ak máte odli¹né verzie, odin¹talujte ich alebo ich doèasne premenujte.
Ak neprogramujete, nebudete ich potrebova» a teda ich mô¾ete
odin¹talova».
- lex (alebo flex) a yacc (alebo bison)
Tieto sú vyu¾ívané z libPropList. Lex v skutoènosti nie je nutný,
lebo jeho výstupný súbor je prítomný, ale buï ja alebo automake je
hlupák, lebo configuraèný skript pre libPropList sa jednoducho
ukonèí z neznámych dôvodov ak lex nie je prítomný.
NEPOVINNÉ:
==========
Tieto kni¾nice nie sú nutné pre beh Window Makera, ale sú podporované
v prípade, ¾e ich chcete pou¾íva». Èísla verzií sú tie, ktoré som pou¾il
ja (teda urèite fungujú), ale aj iné verzie mô¾u pracova» správne.
- libXPM 4.7 alebo nov¹ia
Star¹ie verzie nemusia fungova»!!!
Dostupné na ftp://sunsite.unc.edu/pub/Linux/libs/X/
Podpora XPM je aj vstavaná, ale nenaèíta obrázky v
ne¹tandardných kódovaniach.
- libpng 0.96 alebo nov¹ia a zlib
Pre podporu obrázkov PNG.
http://www.cdrom.com/pub/png/
- libtiff 3.4 alebo nov¹ia
Pre podporu obrázkov TIFF.
ftp://ftp.sgi.com/graphics/tiff
- libjpeg 6.0.1 alebo nov¹ia
Pre podporu obrázkov JPEG.
http://www.ijg.org/
- libgif 2.2 alebo libungif
Pre podporu obrázkov GIF.
ftp://prtr-13.ucsc.edu/pub/libungif/
- GNU xgettext
Ak chcete pou¾íva» prelo¾ené hlásenia, potrebujete GNU gettext.
Iné verzie gettext nie sú kompatibilné a nebudú fungova».
Stiahnite si GNU verziu z ftp://ftp.gnu.org
MO®NOSTI CONFIGURE:
===================
Tieto mo¾nosti mô¾u by» dané skriptu configure ako argumenty za úèelom
povolenia/zakázania urèitých vlastností Window Makera. Príklad:
./configure --enable-kde --enable-gnome
nakonfiguruje Window Maker s podporou KDE a GNOME.
Zoznam v¹etkých mo¾ností vypí¹e príkaz ./configure --help
--with-libs-from
cesty, kde sa majú hµada» kni¾nice. Re»azec -L musí predchádza»
ka¾dú cestu, napr.:
--with-libs-from="-L/opt/libs -L/usr/local/lib"
--with-incs-from
cesty, kde sa majú hµada» hlavièkové súbory. Re»azec -I musí
predchádza» ka¾dú cestu, napr.:
--with-incs-from="-I/opt/headers -I/usr/local/include"
--enable-single-icon
umo¾òuje zrolovanie v¹etký ikon aplikácií WM_CLASS+WM_INSTANCE do
jedinej. Táto vlastnos» nie je podporovaná zo strany vývojárov.
V prípade problémov s òou, kontaktujte autora:
Christopher Seawood <cls@seawood.org>
--disable-shm
zaká¾e pou¾itie roz¹írenia zdieµanej pamäte MIT. Toto trochu spomalí
generovanie textúr, ale v niektorých prípadoch je táto voµba potrebná
kvôli chybe, ktorá spôsobuje nesprávne zobrazovanie ikon a textúr.
--disable-motif
zaká¾e podporu pre pokyny mana¾éra okien wmw
--enable-openlook
povolí podporu pre pokyny mana¾éra okien OPEN LOOK(tm)
--enable-gnome
povolí podporu pre pokyny mana¾éra okien GNOME
--enable-kde
povolí podporu pre pokyny mana¾éra okien kde/kwm
--enable-lite
odstráni veci, ktoré sa u¾ nachádzajú v desktopových prostrediach
ako KDE a GNOME. Odstránené veci sú: zoznam okien, menu aplikácií,
výber viacerých okien. Vedzte, ¾e u¾ nebudete schopní ukonèi»
Window Maker; budete ho musie» zabi» pou¾itím signálu SIGTERM alebo
ho ukonèi» z KDE. Neodporúèa sa povoli» túto vlastnos».
--enable-modelock
podpora pre XKB nastavenie jazyka. Ak neviete, èo to je, pravdepo-
dobne to nepotrebujete. (Slú¾i to na prepínanie rozlo¾enia kláves
pomocou nového tlaèidla na hornom paneli okien.)
--enable-sound
povolí podporu pre modul zvukových efektov
--disable-xpm
zaká¾e podporu pre kni¾nicu XPM aj keï je dostupná na va¹om systéme.
--disable-png
zaká¾e pou¾itie kni¾nice PNG
--disable-tiff
zaká¾e pou¾itie kni¾nice TIFF
--disable-gif
zaká¾e pou¾itie kni¾nice GIF
--disable-jpeg
zaká¾e pou¾itie kni¾nice JPEG
--disable-shape
zaká¾e tvarované okná (pre oclock, xeyes atï.)
POZNÁMKY PRE ©PECIFICKÉ PLATFORMY:
==================================
- DEC/Alpha
Nasledovný mail nie je prelo¾ený, ale hovorí sa v òom, ¾e
_pravdepodobne_ nie je nutné konfigurova» Window Maker na
Alphe s voµbou --disable-shm.
#>>>>>>>>>>>
From: Anton Ivanov <aivanov@eu.level3.net>
To: Marcelo E. Magallon <mmagallo@debian.org>
Subject: Re: Is the WindowMaker package working ok on Alpha?
> Hi,
>
> I was reading some docs on the WindowMaker tarball, and found this:
>
> | - DEC/Alpha machines
> | You might need to pass the --disable-shm flag to configure,
> | like ./configure --disable-shm
>
> is anyone having problems with WindowMaker on Alpha? Can someone
> please test this? Should the flag be passed when building on Alpha?
Disclaimer: alphas under my command have never run X and are least likely to
suddenly start running it anytime soon.
Alpha used to have some ridiculously low amount of shared memory
configured.
So quite a lot of apps used to barf. Namely - cdrecord, mysql server, etc.
Check where is yours at the moment and raise it to a more appropriate
value by either catting to the appropriate /proc entry or changing the
/usr/src/linux/include/asm/shmparam.h.
Otherwise the shared memory on alpha should be fully functional and I
see no reason to disable it. Mine are bumped up to 32 or more on most
machines.
And If I recall correctly the comments in that file are actually
wrong. Value is not bytes, but in machine size word. For alpha *8.
As I said - I do not run X on them so all #include "stdisclaimer.h"
apply.
#<<<<<<<<<<<<
- SCO Unix - spustite configure takto
CFLAGS="-belf -DANSICPP" ./configure
- SunOS, Solaris
Ak máte nain¹alované gcc, spustite configure takto:
CPP_PATH="gcc -E -x c" ./configure
Cpp od Sunu chýbajú niektoré vlastnosti, ktoré Window Maker potrebuje,
a to mô¾e spôsobi» problémy pri parsovaní konfiguraèných súborov.
Je tie¾ mo¾né, ¾e budete musie» pou¾i» --with-libs-from a
--with-incs-from na urèenie ciest k libtiff.
Niekto mi mailoval, ¾e tie¾ /usr/local/lib musí by» prvá cesta v
premennej LD_LIBRARY_PATH, aby to fungovalo.
Ak máte Ultra Creator 3D alebo iný stroj s high-end grafikou,
uistite sa, ¾e spú¹»ate iXy s 24-bitovou farebnou håbkou alebo
mô¾ete ma» problémy s pomie¹anými farbami. Toto je chyba wmakera
a bude opravená.
- GNU/Linux vo v¹eobecnosti
Uistite sa, ¾e máte /usr/local/lib v /etc/ld.so.conf a ¾e ste
po in¹talácii spustili ldconfig.
Odin¹talujte v¹etky balíkované verzie Window Makera pred in¹talovaním
novej verzie.
- RedHat GNU/Linux
Systémy RedHat majú niekoµko nepríjemných problémov. Ak ich pou¾ívate,
dodr¾ujte nasledovné kroky, alebo vám Window Maker nebude fungova»:
* ak máte nain¹alovaný Window Maker, ktorý je dodaný s RedHatom,
pred upgadom ho odin¹talujte;
* uistite sa, ¾e nemáte premenné LANG a LINGUAS nastavené na en_RN;
* uistite sa, ¾e máte /usr/local/bin v premennej PATH;
* uistite sa, ¾e máte /usr/local/lib v /etc/ld.so.conf pred
spustením ldconfig;
* ak máte problémy, v ktorých sa spomína chyba s --no-reexec,
odin¹talujte libtool-1.2b a nain¹talujte libtool-1.3. libtool-1.3
nájdete na ftp.gnu.org. Tie¾ si preèítajte èas» RIE©ENIE PROBLÉMOV.
* uistite sa, ¾e máte symbolický odkaz z /usr/include/X11 na
/usr/X11R6/include/X11 (ak nie, zadajte ln -s /usr/X11R6/include/X11
/usr/include/X11 )
* uistite sa, ¾e /lib/cpp odkazuje na program cpp
Ak máte akékoµvek pochybnosti, prosím, neotáµajte a spojte sa
s u¾ívateµskou podporou RedHatu. Radi vám odpovedia na v¹etky
va¹e otázky týkajúce sa ich systému. Vedia toho o svojom
systéme viac ako my (nepou¾ívame RedHat).
- PowerPC MkLinux
Musíte ma» poslednú verziu Xpmac. Star¹ie verzie majú asi chyby,
ktoré spôsobujú zmrznutie celého systému.
- Debian GNU/Linux
Ak chcete podporu JPEG a TIFF, uistite sa, ¾e máte nain¹talované
libiff-dev a libjpeg-dev.
- SuSE GNU/Linux
Ak ste si nain¹talovali balík Window Makera od SuSE, odin¹talujte
ho pred pokusmi o skompilovanie wmakera, alebo mô¾ete ma» problémy.
- MetroX (neznáma verzia)
MetroX má chybu, ktorá kazí obrázky, ktoré sú nastavené ako pozadie
okien. Ak pou¾ívate MetroX a máte èudné problémy s textúrami,
nepou¾ívajte textúry v horných li¹tách. Alebo pou¾ite iný X server.
IN©TALÁCIA:
===========
Kompilácia Window Makera
------------------------
Pre rýchly ¹tart, zadajte nasledovné príkazy v shelly:
./configure
make
potom sa prihláste ako root a zadajte:
make install
ldconfig
alebo ak chcete z binárnych súborov odstráni» symboly pre debugger a urobi»
ich men¹ie, napí¹te miesto toho
make install-strip
ldconfig
Toto skompiluje a nain¹taluje Window Maker so ¹tandardnými parametrami.
Ak si chcete prispôsobi» nastavenia kompilácie, mo¾ete to urobi» nasledovne:
1. (voliteµne) Pozrite sa na èas» MO®NOSTI CONFIGURE, kde sú
uvedené mo¾nosti. Tie¾ spustite:
./configure --help
ktorý vám vypí¹e kompletný zoznam ostatných mo¾ných nastavení.
2. Spustite configure s nastaveniami, ktoré chcete. Napríklad,
ak chcete pou¾íva» podporu pre KDE, zadajte:
./configure --enable-kde
3. (voliteµne) Otvorte si súbor src/wconfig.h vo svojom obµúbenom
textovom editore a prejdite si ho, èi nenájdete nejaké nastavenia,
ktoré chcete zmeni».
4. Kompilácia. Zadajte len:
make
5. Prihláste sa ako root (ak to nie je mo¾né, èítajte èas» "Nemám
rootove heslo :-( ") a nain¹talujte Window Maker:
su root
make install
Nastavenia ¹pecifické pre u¾ívateµov
------------------------------------
Nemusíte sa dr¾a» týchto in¹trukcií, ak robíte upgrade Window Makera zo
star¹ej verzie, pokiaµ to nie je uvedené v súbore NEWS.
Ka¾dý u¾ívateµ na va¹om systéme, ktorý chce pou¾íva» Window Maker, musí
urobi» nasledovné:
1. Nain¹talova» konfiguraèné súbory Window Makera do svojho
domovského adresára:
wmaker.inst
wmaker.inst nain¹taluje konfiguraèné súbory Window Makera a nastaví
iXy aby sa pri ¹tarte automaticky spustil Window Maker.
To je v¹etko!
Základné informácie o konfigurácii a iných veciach vám poskytne
"man wmaker".
Pre hlb¹í úvod do Window Makera si preèítajte si U¾ívateµký manuál.
Tie¾ sa mô¾te pozrie» na FAQ.
Installing the extras package
-----------------------------
Unpack WindowMaker-extra-<version-number>.tar.gz in /usr/local/share
You can get the file at ftp://ftp.windowmaker.org. 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.
Nemám rootove heslo :(
----------------------
Ak nemáte práva roota, mô¾ete si nain¹talova» Window Maker do svojho
domovského adresára. Na to musíte pou¾i» voµbu --prefix pre configure
v druhom kroku kompilácie Window Makera. Tie¾ musíte pou¾i» voµbu
--with-appspath, pomocou ktorej ¹pecifikujete cestu pre WPrefs.app.
Príklad:
./configure --prefix=/home/jshome --with-appspath=/home/jshome/GNUstep/Apps
Poto pridajte adresár /home/jshome/bin do premennej PATH, /home/jshome/lib
do premennej LD_LIBRARY_PATH a spustite bin/wmaker.inst
Samozrejme, predpokladá sa, ¾e /home/jshome nahradíte va¹im skutoèným
domovským adresárom.
UPGRADE
=======
Ak robíte upgrade zo star¹ej verzie Window Makera:
1. Skofigurujte a skompilujte Window Maker ako v¾dy
2. Nain¹talujte Window Maker (ale nespustite wmaker.inst)
3. Preèítajte si súbor NEWS a ak je to potrebné, upravte
svoje konfiguraèné súbory.
RIE©ENIA PROBLÉMOV
==================
Ak máte problémy poèas konfigurácie (spú¹»ania configure), napríklad
nemo¾nos» pou¾i» grafickú kni¾nicu, o ktorej viete, ¾e ju máte nain¹talovanú,
v súbore config.log nájdete príèinu problému.
== Error with loading fonts, even if they exist.
Skúste kompiláciu bez podpory NLS.
== Error when configuring
ltconfig: unrecognized option `--no-reexec'
Try `ltconfig --help' for more information.
configure: error: libtool configure failed
Odstáòte voµbu --no-reexec zo súborov aclocal.m4 a libPropList/aclocal.m4
a spustite configure.
Tie¾ sa uistite, ¾e autoconf a automake, ktoré máte nain¹talované, sú v
týchto verziách:
autoconf 2.13
automake 1.4
libtool 1.3
Nesmie to by» libtool 1.2b, ale libtool 1.3, zo stránok GNU.
== Cant find proplist.h or libPropList.something
Stiahnite a nain¹talujte si libPropList zo stránok uvedených
niekde v tomto súbore.
== configure doesn't detect libtiff, or other graphic libraries.
Odstráòte config.cache, spustite configure s pridanými nasledovnými voµbami
(okrem iných, ktoré pou¾ívate):
--with-libs-from="-L/usr/local/lib"
--with-incs-from="-I/usr/local/include -I/usr/local/include/tiff"
Vlo¾te cesty k va¹im grafickým kni¾niciam a zodpovedajúcim hlavièkovým
súborom. Mô¾ete vlo¾i» viac ciest do ka¾dej z týchto volieb, ako je to
uvedené v príklade --with-incs-from. Len ich oddeµte medzerou.
== configure doesn't detect libXpm.
* Skontrolujte, èi máte symbolický odkaz z libXpm.so.4.9 na libXpm.so
== Segmentation fault on startup
* Skontrolujte verziu libXpm, musíte ma» aspoò 4.7
* Skontrolujte, èi máte upravenú verziu ~/GNUstep/Defaults/WindowMaker
Ak si nie ste istí, skúste premenova» ~/GNUstep na ~/GNUtmp a spustite
wmaker.inst
== "...: your machine is misconfigured. gethostname() returned (none)"
* Meno va¹eho poèítaèa je nastavené na nieèo nesprávne, èo zaèína
úvodzovkami. Preèítajte si man hostname a dozviete sa, ako to nastavi».
== The root menu contains only 2 entries. ("XTerm" and "Exit...")
* Window Maker nevie nájs» cpp (C preprocesor). Ak sa vá¹ cpp nenachádza
v /lib/cpp, upravte src/config.h a vlo¾te správnu cestu do CPP_PATH.
== checking lex output file root... configure: error: cannot find output from true; giving up
* Preèítajte si èas» PO®IADAVKY v tomto súbore.
MIESTNE NASTAVENIA/INTERNACIONALIZÁCIA
======================================
Window Maker má podporu pre národné jazyky. Aby ste ju povolili, musíte
skompilova» Window Maker s niekoµkými prídavnými parametrami.
0 - Musíte ma» nain¹talovaný balík GNU gettext. Mô¾ete ho nájs» na
adrese ftp://prep.ai.mit.edu/pub/gnu/gettext-nnn.tar.gz
Kroky 1 a¾ 3 mô¾ete vynecha», ak pou¾ívate skript Install
1 - Musíte urèi» jazyky, pre ktoré chcete podporu. Nastavte premennú
LINGUAS na zoznam miestnych nastavení, ktoré chcete. Angliètina je
podporovaná v¾dy. Príklad:
setenv LINGUAS "pt ja de"
(csh)
alebo
export LINGUAS;LINGUAS="pt ja de"
(sh)
Zoznam podporovaných miestnych nastavení nájdete v súbore po/README.
Angliètina je implicitným jazykom.
Ak chcete preklada» a udr¾iava» súbory s miestnymi nastaveniami, preèítajte
si súbor po/README.
2 - Naviac, ak vá¹ jazyk pou¾íva multi-byte znaky, napríklad Japonèina
alebo Kórejèina, musíte nastaveniu MultiByteText priradi» YES v súbore
~/GNUstep/Defaults/WMGLOBAL
3 - Konfigurujte, kompilujte a in¹talujte Window Maker ako zvyèajne.
4 - Urèité miesne nastavenia si zvolíte nastavením premennej LANG na
to, ktoré chcete. Napríklad, ak chcete nastavi» slovenské miestne
nastavenia, musíte spusti»
setenv LANG pt
(csh)
export LANG; LANG=pt
(Bourne sh a podobné)
Pozor: Ak máte nastavenú premennú LC_CTYPE, musíte ju zru¹i» pred
spustením wmaker.
Window Maker hµadá súbory s definíciou menu v nasledovnom poradí
(v tomto prípade pre brazílsku portugalèinu):
menu.pt_BR
menu.pt
menu
5 - Ak si zvolíte jazyk, ktorý pou¾íva multi-byte znaky, musíte poriadne
nastavi» svoje fonty. Preèítajte si manuálovú stránku k XCreateFontSet,
kde nájdete viac detailov. Musíte v súbore ~/G/D/WindowMaker upravi» fonty
pre horné li¹ty, menu a iné veci. Pre fonty pou¾ité v dialógových oknách
upravte súbor ~/G/D/WMGLOBAL. Re»azce %d v menách fontov nesmú by»
odstránené. Tie¾ mô¾ete pou¾i» skript wsetfont, ktorý to urobí za vás.
Napríklad mô¾e zada» v súbore ~/G/D/WindowMaker nasledovné:
WindowTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTitleFont = "-*-helvetica-bold-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
MenuTextFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-14-*";
IconTitleFont = "-*-helvetica-medium-r-normal-*-8-*,-*-*-medium-r-normal-*-12-*";
ClipTitleFont = "-*-helvetica-bold-r-normal-*-10-*,-*-*-medium-r-normal-*-12-*";
DisplayFont = "-*-helvetica-medium-r-normal-*-12-*,-*-*-medium-r-normal-*-12-*";
a v ~/G/D/WMGLOBAL:
SystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
BoldSystemFont = "-*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*";
Tieto dva fonty sa pou¾ijú len v aplikáciách, ktoré pou¾ívajú WINGs
(Window Maker a WPrefs.app)
Skript wsetfont vám umo¾ní nastavi» fonty jednoduch¹ím spôsobom. Pozrite
sa priamo do jeho súboru pre bli¾¹ie informácie.

234
Install
View File

@@ -2,7 +2,7 @@
#
# WindowMaker configuration and compilation script.
#
# Copyright (c) 1997, 1998 Alfredo K. Kojima
# Copyright (c) 1997, 1998, 1999 Alfredo K. Kojima
#
export LINGUAS;LINGUAS=""
@@ -10,6 +10,7 @@ if test "$NLSDIR" = ""; then
export NLSDIR;NLSDIR="/usr/lib/locale"
fi
OPTIONS=""
PREFIX="/usr/local"
@@ -19,21 +20,106 @@ perai() {
}
perform() {
if ! $* ; then
echo
echo "Window Maker installation failed or aborted by user."
exit 1
fi
}
help() {
echo "Usage: $(basename $0) <switch>"
echo "Where switches are:"
echo " -s --quiet make silent build"
echo " -h --help show this message"
echo ""
exit $1
}
OPTIONS=""
MAKE_OPTIONS=""
while [ -n "$1" ]
do
case "$1" in
"-s"|"--quiet") OPTIONS="--quiet"
MAKE_OPTIONS="-s";;
"-h"|"--help") help 0;;
*) echo "bad command-line parameter $1"
help 1;;
esac
shift
done
trap "echo Window Maker installation aborted. ; exit 1" 2 3
echo
echo "========================"
echo "WindowMaker Installation"
echo "========================"
echo "========================="
echo "Window Maker Installation"
echo "========================="
echo
echo "NOTE: If this script fails, read the INSTALL file and"
echo "install by hand."
echo
echo "Please read the README, INSTALL and FAQ files before e-mailing "
echo "questions. We will IGNORE any questions that are already"
echo "answered in the documentation."
echo
perai
echo
echo "Did you install libPropList? If not, please install it now."
echo
perai
echo "Did you read the INSTALL file?"
echo -n "<y/n> "
read rtfm
if [ "$rtfm" != y ]; then
echo "Please read the INSTALL file before installing"
exit
fi
echo "Are you sure?"
echo -n "<y/n> "
read rtfm
if [ "$rtfm" != y ]; then
echo "Please read the INSTALL file before installing"
exit
fi
echo "Are you lying?"
echo -n "<y/n> "
read rtfm
if [ "$rtfm" != n ]; then
echo "What a shame!"
echo "Please read the INSTALL file before installing"
exit
fi
echo "Do you *swear* that you really read the INSTALL file?"
echo -n "<y/n> "
read rtfm
if [ "$rtfm" != y ]; then
echo "Please read the INSTALL file before installing"
exit
fi
echo "Last chance. You will not get help if you have some problem"
echo "because you didn't read that file. Even if your computer explodes."
echo "Do you *really* read it?"
echo -n "<y/n> "
read rtfm
if [ "$rtfm" != y ]; then
echo "Please read the INSTALL file before installing"
exit
fi
echo
echo "Ok, you have been warned."
echo
echo "NOTE: If the installation procedure fails, read the INSTALL file and do"
echo "the installation manually."
perai
if test "$USER" != "root"; then
echo "Warning: you must run this script as the root user."
perai
echo
echo "Be sure to specify an installation path where you have"
echo "write persmission."
echo "Warning: you must run this script as root to install"
echo "Window Maker. Hit <Control>-<C> to quit this script."
perai
echo
fi
@@ -42,17 +128,31 @@ echo
echo "Option Selection"
echo "================"
######################## Sound
######################## KDE
echo
echo "Do you want sound support? Note that you need a module distributed"
echo "separately to make it work. You can get it at:"
echo "http://www.frontiernet.net/~southgat/wmsound"
echo -n "<y/n> [y] "
read SFX
echo "Do you want KDE support?"
echo -n "<y/n> [n] "
read kde
if [ "$kde" = y -o "$kde" = Y ]; then
OPTIONS="$OPTIONS --enable-kde"
fi
if [ "x$SFX" = "x" -o "$SFX" = "y" -o "$SFX" = "Y" ]; then
OPTIONS="$OPTIONS --enable-sound"
######################## GNOME
echo
echo "Do you want GNOME support?"
echo -n "<y/n> [n] "
read gnome
if [ "$gnome" = y -o "$gnome" = Y ]; then
OPTIONS="$OPTIONS --enable-gnome"
fi
######################## OLWM
echo
echo "Do you want OPEN LOOK(tm)/olwm support?"
echo -n "<y/n> [n] "
read olwm
if [ "$olwm" = y -o "$olwm" = Y ]; then
OPTIONS="$OPTIONS --enable-openlook"
fi
######################## NLS
@@ -67,16 +167,16 @@ if [ "$NLS" = "y" -o "$NLS" = "Y" ]; then
ling=` (cd po; /bin/ls *.po) `
ALL_LINGUAS=""
for l in $ling; do
lname=`(cd po; grep Language-Team $l|cut -f 2 -d: |cut -f 2 -d\ )`
lname=`(cd po; grep Language-Team $l|cut -f2- -d:|cut -f1 -d\\\\|cut -f1 -d\<)`
lname=`echo $lname`
lcode=`basename $l .po`
ALL_LINGUAS="$ALL_LINGUAS $lcode"
echo "$lcode $lname"
done
echo "Type in the locales you want [$ALL_LINGUAS]"
echo "Type in the locales you want (all will install everything) [none]"
read foo
if test "x$foo" = "x"; then
LINGUAS=$ALL_LINGUAS
if test "$foo" = "all"; then
LINGUAS="$ALL_LINGUAS"
else
LINGUAS="$foo"
fi
@@ -98,16 +198,6 @@ if [ "$NLS" = "y" -o "$NLS" = "Y" ]; then
continue
fi
if [ "$MB" = "" -a "$i" = "ja" -o "$i" = "kr" ]; then
echo
echo "A language you selected needs multi-byte character support"
echo "Do you want to enable it?"
echo -n "<y/n> [n] "
read MB
if [ "$MB" = "y" -o "$MB" = "Y" ]; then
OPTIONS="$OPTIONS --enable-kanji"
fi
fi
done
echo
echo "Where do you want to put the message files? [$NLSDIR]"
@@ -122,17 +212,18 @@ fi
done=0
while [ $done = 0 ]; do
echo
echo "Where do you want to install WindowMaker? [$PREFIX]"
echo "Where do you want to install Window Maker? [$PREFIX]"
echo "Don't change it if you don't know what you're doing."
echo "(The default path will install WindowMaker in "
echo "$PREFIX/bin, $PREFIX/lib etc.)"
if test "$USER" != "root"; then
echo "Make sure to specify a path where you have write permission."
fi
echo "(The default will put Window Maker in $PREFIX/bin, $PREFIX/lib etc.)"
echo -n "? "
read foo
if test "x$foo" != "x"; then
if [ "$foo" = "y" -o "$foo" = "n" ]; then
if test "x$foo" != "x"; then
if [ "$foo" = "y" -o "$foo" = "n" ]; then
echo
echo "Hmm... I don't think you really want to install WindowMaker into \"$foo\""
echo "Hmm... I don't think you really want to install Window Maker into \"$foo\""
echo
else
done=1
@@ -142,60 +233,63 @@ while [ $done = 0 ]; do
done=1
fi
echo
echo "$PREFIX/bin must be in the PATH environment variable of all users who use WindowMaker"
echo " $PREFIX/bin must be in the PATH environment variable"
echo "of all users who will use Window Maker"
perai
done
OPTIONS="$OPTIONS --prefix=$PREFIX"
###################### Build libPropList
##################### Install stripped binaries?
if [ ! -d libPropList ]; then
gzip -d -c libPropList.tar.gz | tar xf -
fi
echo "-----------------------"
echo "Building libPropList..."
echo "-----------------------"
cd libPropList
if [ ! -f config.status ]; then
./configure
fi
make
cd ..
if [ ! -f libPropList/libPropList.a ]; then
echo "Build of libPropList was not successfull. "
exit
INSTALL="install"
echo "Do you want stripped binaries to be installed?"
echo "Installed binaries will be smaller (with debug info removed)."
echo -n "<y/n> [n] "
read foo
if [ "$foo" = y -o "$foo" = Y ]; then
INSTALL="install-strip"
fi
##################### Configure
echo "--------------------------"
echo "Configuring WindowMaker..."
echo "Configuring Window Maker..."
echo "--------------------------"
if [ `uname -s` = "SCO_SV" ]; then
echo "CFLAGS=\"$CFLAGS -belf -DANSICPP\" ./configure $OPTIONS"
CFLAGS="$CFLAGS -belf -DANSICPP" ./configure $OPTIONS
CFLAGS="$CFLAGS -belf -DANSICPP"
perform ./configure $OPTIONS
else
echo "CFLAGS=\"$CFLAGS $GCCFLAGS\" ./configure $OPTIONS"
CFLAGS="$CFLAGS $GCCFLAGS" ./configure $OPTIONS
CFLAGS="$CFLAGS $GCCFLAGS"
perform ./configure $OPTIONS
fi
#################### Compile
echo "------------------------"
echo "Compiling WindowMaker..."
echo "------------------------"
(cd src; make clean)
make
echo "-------------------------"
echo "Installing WindowMaker..."
echo "Compiling Window Maker..."
echo "-------------------------"
(cd src; perform make $MAKE_OPTIONS clean)
perform make $MAKE_OPTIONS
make install
echo "--------------------------"
echo "Installing Window Maker..."
echo "--------------------------"
perform make $MAKE_OPTIONS $INSTALL
if [ `uname -s` = "Linux" ]; then
echo
echo " Make sure $PREFIX/lib is in the /etc/ld.so.conf file"
/sbin/ldconfig
fi
echo
echo "Installation Finished!"

48
MIRRORS
View File

@@ -1,6 +1,6 @@
WindowMaker FTP Mirror Sites
============================
Window Maker FTP Mirror Sites
=======-=====================
Official Site (USA):
--------------------
@@ -35,14 +35,29 @@ Contact: Joshua Go <joshuago@usa.net>
ftp://ftp.cybertrails.com/pub/windowmaker/
Contact: Adam Jacob <adam@cybertrails.com>
Provider: Ameth Technologies
http://www.ameth.org/windowmaker/
ftp://ftp.ameth.org/pub/mirrors/ftp.windowmaker.org/
Contact: Chase Phillips <shepard@ameth.org>
Third Party WindowMaker Distribution Packages
=============================================
Third Party Window Maker Distribution Packages
==============================================
RedHat/RPM
----------
Debian GNU/Linux (deb)
----------------------
Contact: Marcelo Magallon <mmagallo@efis.ucr.ac.cr>
Sites:
http://master.debian.org/~mmagallo/packages/wmaker/
RedHat GNU/Linux (RPM)
----------------------
For Intel:
Contact: Jim Knoble <jmknoble@pobox.com>
Sites:
@@ -50,5 +65,26 @@ ftp://ftp.windowmaker.org/pub/beta/compiled/linux/rpms/
ftp://ftp.redhat.com/pub/contrib/SRPMS/
ftp://ftp.redhat.com/pub/contrib/i386/
For Alpha:
Contact: Peter Petrakis <peterpan@wn.net>
Site:
http://math.stcc.mass.edu/petrakis/downloads/X11
HP-UX
-----
Sites:
UK: http://hpux.csc.liv.ac.uk/
Germany: http://hpux.ask.uni-karlsruhe.de/
US (WI): http://hpux.cae.wisc.edu/
France: http://hpux.cict.fr/
Netherlands: http://hpux.tn.tudelft.nl/
Canada: http://hpux.ee.ualberta.ca/
Italy: http://hpux.dsi.unimi.it/
South Africa: http://hpux.petech.ac.za/
Japan: http://hpux.u-aizu.ac.jp/
US (UT): http://hpux.cs.utah.edu/

View File

@@ -1,14 +1,21 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = wrlib WINGs src util po WindowMaker wmlib test WPrefs.app doc
SUBDIRS = wrlib WINGs src util po WindowMaker wmlib test WPrefs.app doc\
contrib
EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N MIRRORS COPYING.WTFPL \
Install acconfig.h INSTALL.pt README.pt\
FAQ.I18N.cs INSTALL.cs\
mkpatch README.KDE README.GNOME WindowMaker.lsm.in\
README.definable-cursor \
FAQ.I18N.sk INSTALL.sk INSTALL.es INSTALL.fr
# libwmfun-0.0.3.tar.gz
EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N MIRRORS Install acconfig.h\
libPropList.tar.gz mkpatch
libPropList.tar.gz:
-(cd libPropList; $(MAKE) distclean)
-rm -f libPropList.tar.gz
tar cf libPropList.tar libPropList
gzip -9 libPropList.tar
WindowMaker.lsm: WindowMaker.lsm.in
size=`wc -c $(distdir).tar.gz|cut -d\ -f1`;\
size=`echo scale=2\;$$size/1048576|bc`;\
sed -e "s/VERSION/"$(VERSION)"/" \
-e "s/DATE/`date +%d%b%Y|tr a-z A-Z`/"\
-e "s/SIZE/$$size M/"\
WindowMaker.lsm.in > WindowMaker-$(VERSION).lsm

View File

@@ -1,322 +0,0 @@
# Makefile.in generated automatically by automake 1.3 from Makefile.am
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = /bin/sh
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DISTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
CC = @CC@
CPP_PATH = @CPP_PATH@
DFLAGS = @DFLAGS@
GFXFLAGS = @GFXFLAGS@
GFXLIBS = @GFXLIBS@
I18N = @I18N@
I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@
LIBPL_INC_PATH = @LIBPL_INC_PATH@
LIBPL_LIBS = @LIBPL_LIBS@
LN_S = @LN_S@
MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@
NLSDIR = @NLSDIR@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
REDUCE_APPICONS = @REDUCE_APPICONS@
SHAPE = @SHAPE@
SOUND = @SOUND@
VERSION = @VERSION@
WPMOFILES = @WPMOFILES@
XCFLAGS = @XCFLAGS@
XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
XSHM = @XSHM@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LOCALE = @X_LOCALE@
pixmapdir = @pixmapdir@
wprefsdir = @wprefsdir@
SUBDIRS = wrlib WINGs src util po WindowMaker wmlib test WPrefs.app doc
EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N MIRRORS Install acconfig.h\
libPropList.tar.gz mkpatch
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ./src/config.h
CONFIG_CLEAN_FILES =
DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \
Makefile.in NEWS TODO aclocal.m4 config.guess config.sub configure \
configure.in install-sh missing mkinstalldirs
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP = --best
all: all-recursive all-am
.SUFFIXES:
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(ACLOCAL_M4): configure.in
cd $(srcdir) && $(ACLOCAL)
config.status: $(srcdir)/configure
$(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
@SET_MAKE@
all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive info-recursive dvi-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
list='$(SUBDIRS)'; for subdir in $$list; do \
target=`echo $@ | sed s/-recursive//`; \
echo "Making $$target in $$subdir"; \
(cd $$subdir && $(MAKE) $$target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
rev="$$subdir $$rev"; \
done; \
for subdir in $$rev; do \
target=`echo $@ | sed s/-recursive//`; \
echo "Making $$target in $$subdir"; \
(cd $$subdir && $(MAKE) $$target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
(cd $$subdir && $(MAKE) tags); \
done
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
done; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
-rm -rf $(distdir)
GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
dc_install_base=`cd $(distdir)/=inst && pwd`; \
cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
&& $(MAKE) \
&& $(MAKE) dvi \
&& $(MAKE) check \
&& $(MAKE) install \
&& $(MAKE) installcheck \
&& $(MAKE) dist
-rm -rf $(distdir)
@echo "========================"; \
echo "$(distdir).tar.gz is ready for distribution"; \
echo "========================"
dist: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
dist-all: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
distdir: $(DISTFILES)
-rm -rf $(distdir)
mkdir $(distdir)
-chmod 777 $(distdir)
@for file in $(DISTFILES); do \
d=$(srcdir); \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done
for subdir in $(SUBDIRS); do \
test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \
|| exit 1; \
chmod 777 $(distdir)/$$subdir; \
(cd $$subdir && $(MAKE) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
|| exit 1; \
done
info: info-recursive
dvi: dvi-recursive
check: all-am
$(MAKE) check-recursive
installcheck: installcheck-recursive
all-am: Makefile
install-exec: install-exec-recursive
@$(NORMAL_INSTALL)
install-data: install-data-recursive
@$(NORMAL_INSTALL)
install: install-recursive
@:
uninstall: uninstall-recursive
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs: installdirs-recursive
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-rm -f Makefile $(DISTCLEANFILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean-am: mostlyclean-tags mostlyclean-generic
clean-am: clean-tags clean-generic mostlyclean-am
distclean-am: distclean-tags distclean-generic clean-am
maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \
distclean-am
mostlyclean: mostlyclean-recursive mostlyclean-am
clean: clean-recursive clean-am
distclean: distclean-recursive distclean-am
-rm -f config.status
maintainer-clean: maintainer-clean-recursive maintainer-clean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
-rm -f config.status
.PHONY: install-data-recursive uninstall-data-recursive \
install-exec-recursive uninstall-exec-recursive installdirs-recursive \
uninstalldirs-recursive all-recursive check-recursive \
installcheck-recursive info-recursive dvi-recursive \
mostlyclean-recursive distclean-recursive clean-recursive \
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info dvi \
installcheck all-am install-exec install-data install uninstall all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
libPropList.tar.gz:
-(cd libPropList; $(MAKE) distclean)
-rm -f libPropList.tar.gz
tar cf libPropList.tar libPropList
gzip -9 libPropList.tar
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

1090
NEWS

File diff suppressed because it is too large Load Diff

425
README
View File

@@ -1,146 +1,260 @@
WindowMaker X11 Window Manager
<http://windowmaker.org>
<ftp://ftp.windowmaker.org>
Alfredo K. Kojima
<kojima@windowmaker.org>
Dan Pascu
<dan@windowmaker.org>
GNU Window Maker
X11 Window Manager
<http://windowmaker.org>
<ftp://ftp.windowmaker.org>
by
Alfredo K. Kojima
Dan Pascu
Web/FTP Master
Phillip Smith
Congratulations! You have purchased an extremely fine
device that would give you thousands of years of trouble-free
service, except that you undoubtably will destroy it via some
typical bonehead consumer maneuver. Which is why we ask you
to PLEASE FOR GOD'S SAKE READ THIS OWNER'S MANUAL CAREFULLY
BEFORE YOU UNPACK THE DEVICE. YOU ALREADY UNPACKED IT, DIDN'T
YOU? YOU UNPACKED IT AND PLUGGED IT IN AND TURNED IT ON AND
FIDDLED WITH THE KNOBS, AND NOW YOUR CHILD, THE SAME CHILD WHO
ONCE SHOVED A POLISH SAUSAGE INTO YOUR VIDEOCASSETTE RECORDER
AND SET IT ON "FAST FORWARD", THIS CHILD ALSO IS FIDDLING
WITH THE KNOBS, RIGHT? AND YOU'RE JUST NOW STARTING TO READ
THE INSTRUCTIONS, RIGHT??? WE MIGHT AS WELL JUST BREAK THESE
DEVICES RIGHT AT THE FACTORY BEFORE WE SHIP THEM OUT, YOU
KNOW THAT?
-- Dave Barry, "Read This First!"
Matthew Hawkins
<matt@windowmaker.org>
Description
===========
WindowMaker is a window manager designed to emulate the look and feel of
part of the NEXTSTEP(tm) GUI. It's supposed to be relatively fast and small,
feature rich, easy to configure and easy to use, with a simple and elegant
appearance borrowed from NEXTSTEP(tm).
Window Maker is the GNU window manager for the X Window System. It was
designed to emulate the look and feel of part of the NEXTSTEP(tm) GUI. It's
supposed to be relatively fast and small, feature rich, easy to configure and
easy to use, with a simple and elegant appearance borrowed from NEXTSTEP(tm).
Window Maker was designed keeping integration with GNUstep in mind and is the
"official" window manager for it. It is also part of the GNU project
(www.gnu.org) Read more about GNUstep further on this file.
Hints (information given by applications to integrate well with the window
manager) for Motif(tm), OPEN LOOK(tm), KDE and GNOME are also supported.
So you can replace any of the window managers for these environments
with Window Maker while keeping most, if not all, of the native window manager
functionality.
Window Maker was previously called WindowMaker.
Window Maker has no connection with Windowmaker, the software for
making windows and doors.
User Guide
==========
Documentation
=============
The WindowMaker User's Guide can be downloaded from the official ftp
Read before asking.
* README files all over the source tree have info related to the stuff
in the directories.
* INSTALL has installation instructions and some troubleshooting tips.
You're meant to read it before installing. it was not written just to
fill up space in the package...
* FAQ: Frequently Asked Questions. READ IT!!! FAQ.I18N is for
internationalization related questions.
* NEWS: list user visible changes from the previous version. Read it if
you are upgrading.
* MIRRORS: some alternative places where you can get Window Maker,
including platform specific packages of Window Maker.
* BUGFORM: use it to send bug reports. Please do use it.
* ChangeLog: what changed from the previous version?
* BUGS: list of known bugs
*** Tutorial
There's a tutorial maintained by Georges Tarbouriech at:
http://www.linuxfocus.org/~georges.t/
*** User Guide
The Window Maker User's Guide can be downloaded from the official ftp
or web sites.
It can also be viewed in HTML format in:
http://people.delphi.com/crc3419/WMUserGuide/index.htm
Directories & Files
===================
o INSTALL contains installation instructions and some troubleshooting tips.
o Install is a script for configuring and compiling WindowMaker in a easy
way.
o ChangeLog contains the changes since the last version
o BUGS contains a list of the currently known bugs
o FAQ is a list of frequently asked questions. Read it. I won't answer
questions answered in it.
o NEWS is a list of user visible changes since the last version. Read it if
you are upgrading.
o wmlib/ contains the library necessary to write applications that use
WindowMaker specific features, like application defined menus. This library
will be merged into WINGs in the future.
o WINGs/ contain the WINGs (WINGs Is Not GNUstep) tiny widget library. It is
used by wmaker, but can be used by standalone programs as well.
o test/ contains a simple test program that shows some of the things that can
be done with WindowMaker and wmlib
o wrlib/ contains the library used to do image manipulation (loading,
dithering etc.) in WindowMaker. It can be used in other applications.
o util/ contains various utility programs.
o WPrefs/ contains the source code for the WindowMaker Preferences utility.
Read the WPrefs/README file before using it.
o Configuration options can be found in the ~/GNUstep/Defaults/* files
(after installation). The menus can be configured in
~/GNUstep/Library/WindowMaker/menu
o The default configuration files for the system are installed by default in
/usr/local/share/WindowMaker, along with some other data files.
o src/wconfig.h contains various compile time options you can change to
select some options/features and things like the path for configuration
directory.
o BUGFORM is a form you should fill to send a bugreport. Please use the
form. It makes things easier to me and ensures that you give me a reasonable
amount of information. This form should be sent to developers@windowmaker.org
The User Guide explains how to use Window Maker, the configuration files
and options.
Mailing List
============
*** man pages
There is a mailing list for discussing WindowMaker at
wmaker@linuxcenter.com To subscribe to it, send a message containing:
Type "man wmaker" in the shell prompt to get general help about Window Maker
Directories & Files in the Source Tree
======================================
* Install is a script for configuring and compiling Window Maker in a easy
way (not that the normal way is difficult, but...).
* AUTHORS: the credits
* TODO: plans for the future
* contrib/ has some contributed patches that are not supported by Window Maker
because they conflict with design filosophies of the developers or some
other reason.
* util/ has various utility programs.
* WPrefs.app/ is the configuration program.
* src/wconfig.h has compile time options you can change to select some
options/features and other stuff.
* WINGs/ NEXTSTEP lookalike widget library
* wrlib/ image processing library
* po/ has message catalogs wich are the translated versions of the messages
displayed by Window Maker.
* docklib-x.x.tar.gz a library for writing dockapps
HELP ME!!!
==========
There is a mailing list for discussing Window Maker at
wm-user@windowmaker.org To subscribe to it, send a message containing:
subscribe
in the subject and the body of the message to wmaker-request@linuxcenter.com
in the subject of the message to wm-user-request@windowmaker.org
If you have some problem installing or using wmaker, it would be advisable
to ask in the mailing list, as the probability of at least one of the 500+
users there having the same problem as you (and solving it) is bigger than
the three of us. The developers are subscribed to the mailing list, so we
will read your post anyway (no need for cc:). For bug reports, fill
the BUGFORM and send it to developers@windowmaker.org You can also use
the bug tracker page at http://windowmaker.org/cgi-bin/bugs
If you got a problem, ask there (after reading the docs, of course). The
people there is more likely to be able to answer your questions than we are.
For bug reports use the BUGFORM.
Important note: when asking for help (in the mailing list or to the
developerts, directly) always send information about the system you are
using. You can use the system information section at the end of BUGFORM
as a guideline. Another thing: please don't send HTML mail. You will
be risking having your mail deleted before being read. Not everybody
uses a browser to read email, wich makes your message an annoyance.
There should be an option in your mail app to disable it.
If you have a problem with a precompiled version of Window Maker
(rpm, deb etc), first ask the person who made the package.
IMPORTANT NOTE: when asking for help (in the mailing list or to the
developerts, directly) *always* send information about the system you are
using. You can use the system information section at the end of BUGFORM as a
guideline. Another thing: please don't send HTML mail.
There is also a #windowmaker IRC channel at openprojects. To join there,
connect your irc client to irc.openprojects.net, irc.linux.com or some other
server of that network.
Running multiple instances of WindowMaker
=========================================
It is not a good idea to run more than one instance of WindowMaker
GNUstep
=======
GNUstep is a complete object-oriented development system, based on the
OpenStep specification released by NeXT(tm) (now Apple(tm)) and Sun(tm). It
will provide everything one needs to produce cross-platform, object-oriented,
graphical (and non-graphical) applications; providing among other things,
base system libraries, a high-level GUI application framework that uses a
Display PostScript(tm)-like imaging model (DGS), objects for accessing
relational databases, distributed objects and a graphical development
environment, with tools like interface modeller, a project management system
(project center) and other tools.
The GNUstep development system will be used to create a user environment,
with everything needed for a complete graphical user interface, such as a
file viewer, text editors and other applications. Note that the user
environment (or "desktop environment") is only a small part of the whole
GNUstep project and therefore it does not "compete" with other projects like
KDE or GNOME, simply because they are completely different things.
For more information on the GNUstep project, visit: http://www.gnustep.org
and http://gnustep.current.nu
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 behaviour when WindowMaker
files) at the same time. You might get unexpected behaviour when Window Maker
updates it's configuration files.
If you really desire to do this, try running Window Maker with the
command line option --static so that it will not update or change
any of the configuration files.
Sound support
=============
Sound is supported for Linux and FreeBSD systems with the use of a
separately distributed module. You can download it at:
http://www.frontiernet.net/~southgat/wmsound
separately distributed module called WSoundServer. There is also a graphical
configuration tool for setting up your sounds called WSoundPrefs.
You can download these at:
http://shadowmere.student.utwente.nl/
Note that you must compile WindowMaker with the --enable-sound configure
Note that you must compile Window Maker with the --enable-sound configure
flag and set the DisableSound option to NO.
OpenL**k support
================
I guess many users, mainly from the academic world, have to use
applications written using the OpenL**k toolkits, so having support
for these apps must be of some use.
To enable, use --enable-openlook when doing the configure. Note that
not everything is implemented.
Implemented stuff include decoration hints and the push-pin. Not implemented
stuff include _SUN_WINDOW_STATE (the compose led state stuff), drag and drop
interest stuff, header (not sure what's it) and footer strings.
Please give me feedback if something doesn't work. If the feature is
already implemented, but is not working because of a bug, I'll try to
have that fixed. If it's a non-implemented feature and you mention that
it's important (ie: not just cosmetical), I'll consider implementing it.
The "out" state of the pushpin is emulated as a pushed-in close button.
Just click on the button to make it pushed-out, which corresponds
to the pinned-in state of the pushpin. If you push again in the pushed-out
close button, it will act as a normal close button: it will close the window.
Performance Tuning
==================
If you want to diminish WindowMaker's memory usage and improve performance,
If you want to diminish Window Maker's memory usage and improve performance,
while keeping a nice appearance and good functionality, follow the items
bellow:
- use solid textures for everything, mainly titlebars and menus. If you
want a nice looking desktop, use the Traditional style.
- turn NewStyle and Superfluous off
- turn on DisableAnimations
- do not bind many shortcuts in the menu and keep only the essential items
in the menu
- turn on DisableClip
@@ -148,47 +262,116 @@ bellow:
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
- strip down the default IconPath and PixmapPath entries to contain only
the paths that you really have in your system.
- do not use large images in the root background
- remove support for image formats you don't use
- to reduce memory usage, disable the icon cache, by setting the RIMAGE_CACHE
environment variable to 0. If you want to increase performance at the cost
of memory usage, set it's value to a value like the number of different
icons you use.
Copyrights
==========
Keyboard Mouse Control
======================
WindowMaker is copyrighted by Alfredo K. Kojima and is licensed through the
Many people ask about adding keyboard control of mouse, like in fvwm,
but Window Maker will not have such feature. The XKB extension supports
mouse simulation from the keyboard, in a much more powerfull fashion than
any simulation done by a window manager.
To enable it, hit the Control+Shift+NumLock or Shift+NumLock key combination.
You should hear the speaker beeping. To disable it, do the same thing.
To control the mouse the numeric keypad is used as follows:
- 4 (left arrow), 7 (Home), 8 (up arrow), 9 (PgUp), 6 (right arrow),
3 (PgDn), 2 (down arrow) and 1 (End) move the mouse to the corresponding
direction;
- holding one of the above keys and then holding the 5 key will move the
pointer faster;
- / will select the first mouse button (left button);
- * will select the second mouse button (middle button);
- - will select the third mouse button (right button);
- 5 will do a click with the currently selected mouse button;
- + will do a double-click with the currently selected button;
- 0 (Ins) will click and hold the currently selected button;
- . (Del) will release the currently selected button that was previously
clicked with the 0 (Ins) key.
The above key values work in a XFree86 3.2 (X11R6.1) X server but your
milleage may vary.
How to make a gdb backtrace
===========================
Backtraces can help us fix bugs that make Window Maker crash. If you
find a bug that crashes Window Maker, please send a backtrace with your
bug report.
To make a usefull backtrace, you need a core file with debugging
information produced by Window Maker when it crashes. It should
have been installed without stripping too.
To compile wmaker with debugging information:
./configure
make CFLAGS=-g
If you get the dialog window telling you that wmaker crashed and
asks you what to do, tell it to "Abort and leave a core file".
script
cd src
gdb .libs/wmaker path_to_the_core_file
Then, in the gdb prompt type "bt". Quit from gdb by typing "quit"
and then, in the shell prompt, type "exit".
The file named typescript will contain the backtrace.
Copyrights & Disclaimers
========================
Window Maker is copyrighted by Alfredo K. Kojima and is licensed through the
GNU General Public License. Read the COPYING file for the complete license.
The icons that are distributed with this program and were made by Marco van
Hylckama Vlieg, are licensed through the GNU General Public License. Read the
COPYING file for the complete license.
The icons listed in COPYING.WTFPL and are distributed in this
program and were made by Banlu Kemiyatorn (]d), are licensed through the
"do What The Fuck you want to Public License". Read the COPYING.WTFPL
file for the complete license.
NeXT, OpenStep and NEXTSTEP are a trademarks of NeXT Computer, Inc.
All other trademarks are property of their respective owners.
The authors reserve the right to make changes in the software without prior
notice.
Authors
=======
Alfredo K. Kojima <kojima@windowmaker.org>
Dan Pascu <dan@windowmaker.org>
]d <id@windowmaker.org>
Please don't ask us questions before reading the documentation (esp. the
FAQ, this file and INSTALL files) and about "cool" things you see in
people's desktop screenshots.
The AUTHORS file contains a list of the people who have contributed to the
project. The name of people who have helped with localization (translation)
can be found in po/README and WindowMaker/README
can be found in po/README and Window Maker/README
If you have any comments, fixes and bug reports (filled BUGFORMs) send them
to kojima@windowmaker.org
Musicware
=========
If you use WindowMaker and *really* like it, please consider making my day
by sending me a music CD (or a MiniDisc) of your favorite band, singer,
instrumentist, composer or whatever :^). I like listening to music and would
love to get new CDs, especially from other parts of the world. I like almost
any kind of music, from Ozzy Osbourne to Bach (mas não pagode e sertanejo
pelamordideus :), so I will be happy to receive just about anything.
Snail mail address:
Alfredo Kengi Kojima
Rua Firmino O. Bimbi, 255/25B
Porto Alegre - RS
CEP 91751-330
Brazil
to developers@windowmaker.org

53
README.GNOME Normal file
View File

@@ -0,0 +1,53 @@
Information on Using Window Maker with GNOME
--------------------------------------------
Status of GNOME support
-----------------------
GNOME window manager protocols seem to be a work in progress.
Things still change fairly frequently, so, the stuff implemented
may not reflect the latest protocol. If something doesn't work,
that's probably because the protocols have changed again and I still
didn't have time to reimplement everything or noticed that it
changed. If that happens, please tell me exactly what doesn't work.
Other than that, the so called "GNOME Window Manager Compliance - How to
write a GNOME compliant Window Manager" document, says this:
"There are currently a set of other hints available that are, at the
current time, not essential and therefore not documented here. It is,
however envisaged that they will be finalized and added to this
document, but for now are not needed."
Since they are non-essential and undocumented they are not yet implemented.
Implemented stuff:
- GNOME window manager hints
- Motif window manager hints
On the works:
- R6 style session management
Compilation/Installation
------------------------
To compile Window Maker with GNOME support, just configure it as:
./configure --enable-gnome
before compiling.
Also, do not disable mwm hints support (they are enabled by default).
Configuration
-------------
In WPrefs, go to the last section and toggle the "Disable miniwindows" option.

125
README.KDE Normal file
View File

@@ -0,0 +1,125 @@
Information on Using Window Maker with KDE
------------------------------------------
Window Maker supports almost all KDE/KWM specific client
communication protocols, so you can simply replace kwm with
Window Maker, if you think these advantages are worthy:
Window Maker KWM
=============================================================================
Looks NEXTSTEP(tm)/NEXTSTEP(tm) Original, but reminds
enhanced Windows(tm)
Decoration solid, gradient, multi-color solid, vertical and
Textures gradient, pixmaps, textured horizontal gradient,
gradient - all gradients are pixmap
supported in horizontal,
vertical and diagonal
directions
Configurable No Yes, but not totally
Titlebar Buttons
Mini CLI Yes, but limited Yes
Window Specific Yes In KDE 1.1, yes.
Configuration In KDE 1.0, no.
Quick Keyboard Yes In KDE 1.1, yes
Navigation In KDE 1.0, no.
Pager KDE pagers will work as Yes
well as GNOME pagers
Session Not yet supported, but Yes, old (pre-X11R6) style
Management X11R6 style SM is being worked.
Dock kpanel, GNOME panel and Dock kpanel
Built-in Yes No
krootbgwm
GNOME support Yes No
Memory Usage(1) 1.85Mb In KDE 1.0, 3.13Mb
In KDE 1.1, probably more
(1) Memory usage was tested by running wmaker and kwm at the same machine
with the same windows, on the same screen and similar window texture
configurations (at different times, of course). I looked in the output of
ps -m, in the SIZE field, right after starting the window managers.
Enabling KDE Support
--------------------
To enable KDE support in Window Maker, you must compile it after
configuring it as follows:
./configure --enable-kde
Then, just replace kwm with wmaker in your startkde script.
If you are going to use Window Makers sound server, comment out
kwmsound in startkde. Also if wmaker sets your root window
background, comment out kbgndwm, kde's wallpaper setter.
Make sure to disable workspace background setting in KDE. If you
wont be using Window Maker themes anyway, you can set
WorkspaceBack = (none);
in ~/GNUstep/Defaults/WindowMaker
Enhancing Integration
---------------------
Window Maker adds some extensions to KDE's messaging stuff, so you can run
Window Maker specific commands from places like kpanel, krootwm or even
kwmcom. Recently KDE developers have kindly added support for these extensions
in the more recent KDE versions from CVS. The added stuff are the following
kwm like commands:
wm:wmaker - select Window Maker support mode
wmaker:info - show info panel
wmaker:legal - show legal panel
wmaker:arrangeIcons - arrange icons
wmaker:showAll - show all windows
wmaker:hideOthers - hide others
wmaker:restart - restart wmaker
wmaker:exit - exit wmaker
You can test them with kwmcom, like:
kwmcom wmaker:info
Problems
--------
* kpanel will not be kept always on top. That's because kpanel is an
OverrideRedirect window, so Window Maker can't do anything about that.
Before requesting for a hack to work around that in Window Maker, please
request the kpanel author to fix it.
* because the KDE protocol for letting the window manager know the usable
window region is broken, you might find some problems with the window
positioning/maximization code and kpanel's position.
* It seems kpanel (and maybe KDE in general) doesn't like dynamically
changing the number of workspaces. So, don't create or destroy workspaces
while running on KDE, unless you really need.
* If kpanel, kwmpager or kpager becomes confused about the number of
windows present, restart them.
* Wmaker opens windows by default under/over the panel, when the panel is
at top or left of screen. Use the GUI configuration tool WPrefs to change
this.
* Some commands, such as cascade windows and rearrange windows are not
yet implemented.

92
README.definable-cursor Normal file
View File

@@ -0,0 +1,92 @@
Definable Mouse Cursors for Window Maker
----------------------------------------
The definable-cursor feature allows user-definable mouse cursors; the
cursors can either be the built-in ones from the X11 cursor font, or
they can be bitmap (XBM) files. User-definable cursors can be useful
for theme-builders, lefthanders, and the visually impaired.
Defining Your Own Cursors
-------------------------
A cursor specification takes one of the following forms in the
~/GNUstep/Defaults/WindowMaker file:
(none)
(builtin, <cursor-name>)
(bitmap, <bitmap-filename>, <mask-filename>)
They have the following meanings:
none The cursor is inherited from the parent window (often,
this means the root window).
builtin Use the cursor named <cursor-name> from X11's set of
built-in cursors. The names are the same as you use
with 'xsetroot -cursor_name'. See the xsetroot(1) man
page for more information.
bitmap Use the bitmap in <bitmap-filename> as the foreground
cursor bitmap, and the one in <mask-filename> as the
background (mask) bitmap. This is pretty much the same
as 'xsetroot -cursor', except that Window Maker searches
for the bitmaps along its PixmapPath.
You can set the following cursor types (they're shown here with their
defaults):
NormalCursor = (builtin, left_ptr);
ArrowCursor = (builtin, top_left_arrow);
MoveCursor = (builtin, fleur);
TopLeftResizeCursor = (builtin, top_left_corner);
TopRightResizeCursor = (builtin, top_right_corner);
BottomLeftResizeCursor = (builtin, bottom_left_corner);
BottomRightResizeCursor = (builtin, bottom_right_corner);
VerticalResizeCursor = (builtin, sb_v_double_arrow);
HorizontalResizeCursor = (builtin, sb_h_double_arrow);
WaitCursor = (builtin, watch);
QuestionCursor = (builtin, question_arrow);
TextCursor = (builtin, xterm);
SelectCursor = (builtin, cross);
The following cursor types are allowed, but they're deprecated (Window
Maker used them in the past, but doesn't use them anymore):
ResizeCursor = (builtin, sizing);
Using Cursors with 'getstyle' and 'setstyle'
--------------------------------------------
The 'getstyle' and 'setstyle' style/theme-management utilities can
handle user-definable cursors. By default, 'getstyle' ignores cursor
definitions; using 'getstyle -t' to get theme-related settings will
also include any cursors you've defined in the resulting stylefile.
However, by default, 'setstyle' does NOT ignore cursor settings. If
you wish to set a style or theme without installing cursor settings,
you can use 'setstyle --no-cursors' to ignore the cursor definitions.
Random Notes
------------
Most X11 cursors are 16x16 bitmaps. Many X servers can actually handle
larger cursors, though. To check, use:
xdpyinfo
and in the resulting output look for a line such as:
largest cursor: 64x64
The example above indicates that my X server can handle cursors up to
64 pixels wide by 64 pixels high.
You can create your own bitmap cursors using the 'bitmap' program that
accompanies most X11 distributions. For example bitmap cursors and
masks, see <http://www.pobox.com/~jmknoble/WindowMaker/cursors/>.

370
README.es Normal file
View File

@@ -0,0 +1,370 @@
GNU Window Maker
X11 Window Manager
<http://windowmaker.org>
<ftp://ftp.windowmaker.org>
por
Alfredo K. Kojima
Dan Pascu
]d
Web/FTP Master
Phillip Smith
Felicitaciones! A adquirido un dispositivo excelentísimo
que le proporcionará miles de años de uso sin problemas
,si no fuera porque indudablemente lo destruirá a través de alguna
maniobra estúpida típica de consumidor. Por eso le pedimos
por EL AMOR DE DIOS LEA ESTE MANUAL DEL PROPIETARIO CUIDADOSAMENTE
ANTES DE DESEMPAQUETAR EL DISPOSITIVO. ¿YA LO DESEMPAQUETÓ, NO?
DESEMPAQUETELO Y ENCHÚFELO Y ENCIÉNDALO Y DEJE DE TOQUETEAR LAS PERILLAS,
Y AHORA SUS CHICOS, EL MISMO CHICO QUE UNA VEZ METIÓ UNA SALCHICHA EN SU
VIDEOCASETERA Y DEFINIÓ UN "AVANCE RÁPIDO", ¿ESTE CHICO TAMBIÉN ESTÁ
TOQUETEANDO LAS PERILLAS, CIERTO? ¿Y RECIEN AHORA ESTÁ COMENZANDO A LEER
LAS INSTRUCCIONES, CIERTO? PODEMOS TAMBIÉN ROMPER ESTOS DISPOSITIVOS
EN LA FÁBRICA ANTES DE DESPACHÁRLOS, SABIA ESO?
-- Dave Barry, "Lea Esto Primero!"
Descripción
===========
Window Maker es el gestor de ventanas GNU para el Sistema de Ventanas X. Fue
diseñado para emular la apariencia y funcionalidad de parte del GUI de NEXTSTEP(mr).
Procura ser relativamente rápido y pequeño, rico en características, fácil de configurar
y usar, con una simple y elegante apariencia sacada desde NEXTSTEP(mr).
Window Maker fue diseñado teniendo en mente la integración con GNUstep y por eso
es el gestor de ventanas "oficial". Es también parte del proyecto GNU (www.gnu.org)
. Lea mas sobre GNUstep más adelante en este archivo.
Pistas (información dada por las aplicaciones para integrarse bien con el gestor de
ventanas) para Motif(tm), OPEN LOOK(tm), KDE y GNOME también son soportados.
Entonces puede reemplazar cualquiera de los gestores de ventana para estos entornos
con Window Maker manteniendo la mayoría, si no todo, de la funcionalidad del
gestor de ventanas nativo.
Window Maker antes se llamaba WindowMaker.
Window Maker no tiene relación con Windowmaker, el software para
hacer ventanas y puertas.
Documentación
=============
Lea antes de preguntar.
* Los archivos README distribuidos por todas partes del árbol de fuentes
contienen información relacionada al contenido en los directorios.
* INSTALL tiene instrucciones de instalación y algunos consejos cuando tenga
algún problema. Significa que debería leerlo antes de la instalación.
No fue escrito solo para ocupar espacio en el paquete...
* FAQ: Preguntas Frecuentes. LEALO!!! FAQ.I18N es para
preguntas relacionadas con la internacionalización.
* NEWS: lista los cambios visibles por el usuario desde la versión anterior.
Léalo si está actualizando.
* MIRRORS: algunos lugares alternativos donde puede obtener Window Maker,
incluyendo paquetes de Window Maker específicos para ciertas plataformas.
* BUGFORM: uselo para enviar reportes de errores. Por favor uselo.
* ChangeLog: ¿que cambió desde la versión anterior?
* BUGS: lista de errores conocidos.
*** Tutorial
Hay un tutorial mantenido por Georges Tarbouriech en:
http://www.linuxfocus.org/~georges.t/
*** Guía del Usuario
La Guía del Usuario de Window Maker puede ser bajada desde el ftp oficial
o por sitios web.
Puede también ser vista en formato HTML en:
http://people.delphi.com/crc3419/WMUserGuide/index.htm
La Guía del Usuario explica como usar Window Maker, los archivos de configuración
y opciones.
*** man pages
Tipee "man wmaker" en el prompt del shell para obtener ayuda general sobre Window Maker.
Directorios y Archivos en el Árbol de Fuentes
=============================================
* Install es un script para configurar y compilar Window Maker de una forma
fácil (no es que la forma normal sea difícil, pero...).
* AUTORES: los créditos
* TODO: planes para el futuro.
* contrib/ tiene algunos parches aportados que no están soportados por Window Maker
porque entran en conflicto con la filosofía de diseño de los desarrolladores o por
alguna otra razón.
* util/ tiene varios programas utilitarios.
* WPrefs.app/ es el programa de configuración.
* src/wconfig.h posee opciones de compilación que puede cambiar para
seleccionar algunas opciones/caracteristicas y otras cosas.
* WINGs/ biblioteca widget para imitación de NEXTSTEP.
* wrlib/ biblioteca de procesamiento de imagen.
* po/ posee catálogos de mensajes que son las versiones traducidas de los mensajes
mostrados por Window Maker.
* docklib-x.x.tar.gz es una biblioteca para escribir dockapps.
SOCORRO!!!
==========
Hay una lista de correo para discutir sobre Window Maker en
wm-user@windowmaker.org. Para suscribirse, envie un mensaje que contenga:
subscribe
en el tema del mensaje a wm-user-request@windowmaker.org
Si tiene algun problema, pregunte aquí (después de leer los docs, por supuesto). Es
más probable que las personas de la lista sepan contestar sus preguntas
que nosotros. Para reportes de errores use el BUGFORM.
Si tiene un problema con una versión precompilada de Window Maker
(rpm, deb etc), primero pregunte a la persona que hizo el paquete.
NOTA IMPORTANTE: cuando pida ayuda (en la lista de correo o a los desarrolladores,
directamente) *siempre* envie información sobre el sistema que está usando. Puede
usar la sección de información del sistema al final del BUGFORM como una guía.
Otra cosa: por favor no envie correo HTML.
También hay un canal de IRC #windowmaker en openprojects. Únase aquí,
conecte su cliente de irc a irc.openprojects.net, irc.linux.com o algún otro
servidor de esa red.
GNUstep
=======
GNUStep es un completo sistema de desarrollo orientado a objetos, basado en la
especificación OpenStep liberada por NeXT(tm) (ahora Apple(tm) y Sun(tm)). Ello
proveerá todo lo que se necesita para producir aplicaciones multiplataforma,
orientadas a objetos, gráficas (y no gráficas); suministrando dentro de otras cosas,
bibliotecas base del sistema, una estructura de alto nivel para aplicaciones GUI que
usan un modelo de imagenes de tipo Display PostScript(tm) (DGS), objetos para acceso
a bases de datos relacionales, objetos distribuidos y un entorno de desarrollo gráfico,
con herramientas como un modelador de interfaces, un sistema para administración del
proyecto (central de proyecto) y otras herramientas.
El sistema de desarrollo de GNUStep será usado para crear un entorno de usuario,
con todo lo necesario para una completa interface gráfica de usuario, tal como
un visualizador de archivos, editores de texto y otras aplicaciones. Note que el
entorno de usuario (o "entorno de escritorio") es solo un pequeña parte de todo
el proyecto GNUStep y por lo tanto no "compite" con otros proyectos como KDE o GNOME,
simplemente porque son cosas completamente diferentes.
Para más información sobre el proyecto GNUStep, visite: http://www.gnustep.org y
http://gnustep.current.nu
Ejecutando multiples instancias de Window Maker
===============================================
No es una buena idea eejcutar más de una instancia de Window Maker desde
el mismo usuario (ya que wmaker usará los mismos archivos de configuración)
al mismo tiempo. Podría obtener un comportamiento inesperado cuando Window
Maker actualiza sus archivos de configuración.
Si de verdad desea hacer esto, intente ejecutar Window Maker con la opción
de linea de comando --static ya que así no actualizará o cambiará ninguno de los
archivos de configuración.
Soporte para Sonido
===================
El sonido es soportado por los sistemas Linux y FreeBSD con el uso de
un módulo distribuido separadamente llamado WSoundServer. Hay también
una herramienta de configuracion gráfica para definir sus sonidos llamada
WSoundPref.
Puede bajar esto en:
http://shadowmere.student.utwente.nl/
Note que debe compilar Window Maker con el parámetro --enable-sound
y definir la opción DisableSound a NO.
Soporte para OpenL**k
=====================
Calculo que muchos usuarios, principalmente del mundo académico,
tienen que usar aplicaciones escritas usando los toolkits OpenL**k,
así que tener soporte para estas aplicaciones debe ser de algún uso.
Para activarlo, use --enable-openlook al hacer el configure. Note que
no todo está implementado.
Las cosas implementadas incluyen consejos de adorno y el push-pin. Las cosas
no implementadas incluyen _SUN_WINDOW_STATE (la cosa compuesta que lleva el estado),
cosas que interesan sobre arrastrar y soltar, cabecera (no estoy seguro de que sea así)
y cadenas footer.
Por favor hágame saber si algo no funciona. Si la característica ya está implimentada,
pero no funciona por un error, intentaré arreglarlo. Si esta es una característica no
implementada y menciona que es importante (obs: no solo superficial), consideraré
implementarlo.
El estado "out" del pushpin es emular un botón presionado. Solo cliquee
en el botón para hacer que se libere, lo cuál corresponde al estado
pinned-in del pushpin. Si pulsa otra vez en el boton liberado, servirá de
botón normal de cerrado: cerrará la ventana.
Ajuste de Rendimiento.
=====================
Si quiere disminuir el uso de memoria por parte de Window Maker y mejorar el
rendimiento, manteniendo una linda apariencia y buena funcionalidad, siga los
items de abajo:
- use texturas sólidas para todo, principalmente barras de título y menúes.
Si quiere un escritorio de aspecto lindo, use el estilo Tradicional.
- Apague NewStyle y Superfluous
- No una muchos atajos al menú y mantenga solo los items esenciales en el menú.
- Active DisableClip
- edite wconfig.h y desactive el NUMLOCK_HACK y lo mismo con las características
que no use (tenga en mente que algunos de los #defines podrían no funcionar,
ya que ellos no están completamente soportados). Asegúrese de mantener siempre
Numlock y ScrollLock apagados.
- Active DisableAnimations. Puede también #undefine ANIMATIONS en wconfig.h
- quite las entradas por defecto IconPath y PixmapPath para contener solo las
rutas que en verdad tiene en su sistema.
- no use imágenes grandes en el fondo raíz.
- quite el soporte para los formatos de imagen que no use.
- para reducir el uso de la memoria, desactive el caché de ícono, definiendo
la variable de entorno RIMAGE_CACHE a 0. Si quiere aumentar el rendimiento
a expensas del uso de la memoria, defina este valor a un valor igual al
número de íconos distintos que use.
Control del Mouse por Teclado
=============================
Muchas personas preguntan sobre agregar control por teclado al mouse, como
en fvwm, pero Window Maker no tendrá tal característica. La extensión XKB
soporta simulación de mouse desde el teclado, de una manera mucho más poderosa
que cualquier otra simulación hecha por un administrador de ventanas.
Para activarlo, presione la combinación de teclas Control+Shift+NumLock o
Shift+NumLock. Debiera escuchar el beep del parlante. Para desactivarlo,
haga lo mismo.
Para controlar el mouse el teclado numérico se usa así:
- 4 (flecha izquierda), 7 (Home), 8 (flecha arriba), 9 (PgUP), 6 (flecha derecha),
3 (PgDn), 2 (flecha abajo) y 1 (Fin) mueve el mouse a la correspondiente
dirección;
- sosteniendo una de las teclas de arriba y luego sosteniendo la tecla 5 moverá
el puntero más rápido;
- / seleccionará el primer botón del mouse (botón izquierdo);
- * seleccionará el segundo botón del mouse (botón del medio);
- - seleccionará el tercer botón del mouse (botón derecho);
- 5 hará un click con el botón actualmente seleccionado del mouse;
- + hará un doble click con el botón actualmente seleccionado;
- 0 (Ins) cliqueará y mantendrá el botón seleccionado actualmente;
- . (Del) liberará el botón seleccionado actualmente que fue anteriormente
cliqueado con la tecla 0 (Ins).
Los valores anteriores de las teclas funcionarán en un servidor X XFree86 3.2
(X11R6.1) pero su alcance puede variar.
Como hacer un gdb backtrace
===========================
Backtraces pueden ayudarnos a arreglar errores que hicieron que Window Maker falle.
Si encuentra un bug que hace fallar a Window Maker, por favor envie un backtrace con su
reporte de error.
Para hacer un backtrace útil, necesita un archivo core con información de depuración
producida por Window Maker cuando falló. Debería haber sido instalado sin stripping también.
Para compilar wmaker con información de depuración:
./configure
make CFLAGS=-g
Si obtiene el cuadro de diálogo que le dice que wmaker falló y le
pregunta que hacer, respóndale "Abortar y dejar un archivo core"
script
cd src
gdb .libs/wmaker path_to_the_core_file
Luego, en el prompt gdb escriba "bt". Salga de gdb escribiendo "quit"
y luego, en el prompt del shell, scriba "exit"
El archivo llamado typescript contendrá el backtrace.
Derechos de Autor y Descargo de Responsabilidad
===============================================
Window Maker está registrado por Alfredo K. Kojima y está licensiado por la
Licensia Pública General GNU. Lea el archivo COPYING para leer la licensia
completa.
Los íconos que son distribuidos con este programa y fueron hechos por Marco
van Hylckama Vlieg, están licenciados por la Licencia Pública General GNU.
Lea el archivo COPYING para leer la licencia completa.
Los íconos listados en COPYING.WTFPL y son distribuidos en este programa
fueron hechos por Banlu Kemiyatorn (]d), están licenciados por la
"do What The Fuck you want to Public License". Lea el archivo COPYING.WTFPL
para leer la licencia completa.
NeXT, OpenStep y NEXTSTEP son marcas registradas de NeXT Computer, Inc.
Todas las otras marcas registradas son propiedad de sus respectivos dueños.
Los autores se reservan el derecho de hacer cambios en el software sin previo
aviso.
Autores
=======
Alfredo K. Kojima <kojima@windowmaker.org>
Dan Pascu <dan@windowmaker.org>
]d <id@windowmaker.org>
Por favor no nos haga preguntas antes de leer la documentación (especialmente
la FAQ, este archivo y los archivos INSTALL) y sobre cosas "cool" que ve en
las capturas de pantalla del escritorio de las personas.
El archivo AUTHORS contiene una lista de las personas que han contribuido
con el proyecto. El nombre de las personas que han ayudado con localization
(traducción) se puede encontrar en po/README y Window Maker/README
Si tiene algún comentario, arreglos y reportes de errores (complete BUGFORMs)
y enviémelos a developers@windowmaker.org
traducido por Efraín Maximiliano Palermo <max_drake2001@yahoo.com.ar>

379
README.pt Normal file
View File

@@ -0,0 +1,379 @@
GNU Window Maker
Gerenciador de Janelas X11
<http://windowmaker.org>
<ftp://ftp.windowmaker.org>
por
Alfredo K. Kojima
Dan Pascu
Matthew Hawkins
]d
Web/FTP Master
Phillip Smith
Parabéns! Você acabou de adquirir um dispositivo muito
bom que lhe proporcionaria milhares de anos de uso sem problemas,
exceto por que, você, com vai certeza destruí-lo com algum procedimento
idiota típico dos consumidores. Por isso nós pedimos POR FAVOR,
PELO AMOR DE DEUS LEIA O MANUAL DO DONO COM MUITA ATENÇÃO ANTES
DE DESEMBRULHAR O DISPOSITIVO. VOCÊ JÁ O DESEMPACOTOU, NÃO FOI?
VOCÊ DESEMPACOTOU-O, CONECTOU-O, LIGOU-O E ENCHEU-O DE COISAS,
E AGORA A SUA CRIANÇA, A MESMA CRIANÇA QUE UMA VEZ ENFIOU UMA
SALSICHA NO SEU VIDEOCASSETE E APERTOU NO "FAST FORWARD", ESTA
CRIANÇA ESTÁ BRINCANDO COM OS BOTÕES TAMBÉM CERTO? E SÓ AGORA VOCÊ
ESTÁ COMEÇANDO A LER AS INSTRUÇÕES CERTO??? NÓS PODEMOS ENTÃO QUEBRAR
ESTES DISPOSITIVOS NA FÁBRICA ANTES DE DESPACHÁ-LOS, VOCÊ
SABIA DISSO?
-- Dave Barry, "Read This First!"
Descrição
=========
O Window Maker é o gerenciador de janelas GNU para o X Window System. Ele foi
desenvolvido para emular o visual e a sensação de parte da GUI NEXTSTEP(tm).
Procura ser relativamente rápido e pequeno, rico em opções, fácil de
configurar e usar, com uma aparência simples e elegante emprestada do
NEXTSTEP(tm).
O Window Maker foi projetado tendo em mente a integração com o GNUStep e
é o gerenciador de janelas "oficial" dele. É ainda parte do projeto GNU
(www.gnu.org).
Leia mais sobre o GNUstep neste arquivo.
Hints (informações dadas pelas aplicações para que se integrem bem com o
gerenciador de janelas) para Motif(tm), OPEN LOOK(tm), KDE e GNOME também
são suportados. Logo, você pode substituir os gerenciadores de janela desses
ambientes pelo Window Maker e manter muito, senão toda a funcionalidade do
gerenciador de janelas nativo.
O Window Maker antes se chamava WindowMaker.
O Window Maker não tem relação com o Windowmaker, o software para construção
de janelas e portas.
Documentação
============
Leia antes de perguntar.
* Os arquivos README distribuídos por toda a árvore dos fontes contêm
informações relacionadas ao conteúdo dos diretórios.
* O INSTALL possui instruções para instalação e algumas dicas quando há
algum problema. Você deveria lê-lo antes da instalação. Ele não foi escrito
somente para ocupar espaço no pacote...
* FAQ: Frequently Asked Questions. LEIA! O FAQ.I18N é sobre questões
relacionadas à internacionalização.
* NEWS: lista as mudanças de uma versão para outra e que são visíveis ao
usuário. Leia-o se você estiver fazendo uma atualização.
* MIRRORS: alguns locais alternativos onde você pode pegar o Window Maker,
incluindo pacotes do Window Maker específicos para certas plataformas.
* BUGFORM: use-o para enviar relatos de bug. Use-o por favor.
* ChangeLog: o que foi mudado a partir da última versão?
* BUGS: lista dos bugs conhecidos
*** Guia do Usuário
O Guia do Usuário Window Maker pode ser baixado do ftp oficial ou por
sites web. Pode ser visto ainda no formato HTML no:
http://people.delphi.com/crc3419/WMUserGuide/index.htm
O Guia do Usuário explica como usar o Window Maker, fala sobre os
arquivos de configuração e as opções.
*** man pages
Digite "man wmaker" no prompt da shell para obter uma ajuda geral sobre
o Window Maker.
Diretórios & Arquivos na Árvore dos Fontes
==========================================
* O Install é um script para configurar e compilar o Window Maker de
um modo fácil (não que o modo normal seja difícil, mas...).
* AUTHORS: os créditos
* TODO: planos para o futuro
* O contrib/ possui alguns patches enviados e que não foram suportados
pelo Window Maker por entrarem em conflito com a filosofia de projeto dos
desenvolvedores ou por algum outro motivo.
* O util/ possui vários programas utilitários.
* O WPrefs.app/ é o programa de configuração.
* O src/wconfig.h possui opções de compilação que você pode mudar para
selecionar algumas opções/aspectos e outras coisas mais.
* O WINGs/ é a biblioteca de widget NEXTSTEP lookalike
* A wrlib/ é a biblioteca de processamento de imagens
* O po/ possui catálogos de mensagens, que são versões traduzidas das
mensagens mostradas pelo Window Maker
* A docklib-x.x.tar.gz é a biblioteca para desenvolvimento de dockapps
SOCORRO!!!
==========
Há uma lista de discussão para debate de questões sobre o Window Maker
no wm-user@windowmaker.org. Para inscrever-se, mande uma mensagem
contendo:
subscribe
no campo de assunto da mensagem para wm-user-request@windowmaker.org
Se você tiver algum problema, pergunte lá (somente depois de ter lido os
documentos, é claro). As pessoas da lista estão mais preparadas para
resolver o seu problema do que nós. Para relatar BUGS, use o BUGFORM.
Se você tiver problemas com uma versão pré-compilada do Window
Maker (rpm, deb etc), primeiro questione a pessoa que criou o pacote.
NOTA IMPORTANTE: quando for pedir ajuda (seja na lista de discussão ou
diretamente aos desenvolvedores) *sempre* envie informações sobre o sistema
que você está usando. Você pode usar a seção system information no final
do BUGFORM como guia. Outra coisa: não mande mensagens em HTML.
Há ainda o canal de IRC #windowmaker na EFNET. Para entrar lá, conecte
seu cliente de irc no irc.concentric.net, irc.prison.net ou outro
servidor dessa rede.
GNUstep
=======
O GNUstep é um completo sistema de desenvolvimento orientado a objetos,
baseado na especificação OpenStep lançada pela NeXT(tm) (agora Apple(tm) e
Sun(tm)). Ele irá fornecer tudo que é necessário para desenvolver aplicações
orientadas a objetos, gráficas (e não gráficas), cross-platform; fornecendo,
dentre outras coisas, bibliotecas bases do sistema, uma estrutura de alto
nível para aplicações GUI que usa um modelo de imagens do tipo Display
PostScript(tm), objetos para acesso a bancos de dados relacional, objetos
distribuídos e um ambiente de desenvolvimento gráfico, com ferramentas como
um modelador de interfaces, um projeto de gerenciamento de sistema (central
de projetos) e outras ferramentas.
O sistema de desenvolvimento GNUstep será usado para criar um ambiente
de usuário, com tudo necessário para uma interface gráfica, tais como
visualizador de arquivos, editores de texto e outras aplicações. Note que o
ambiente do usuário (ou "ambiente desktop") é somente uma pequena parte de
todo o projeto GNUstep e não "compete" com projetos como o KDE e o GNOME,
simplesmente por que eles são coisas completamente diferentes.
Para mais informação sobre o projeto GNUstep, visite http://www.gnustep.org
e http://gnustep.current.nu
Executando múltiplas instâncias do Window Maker
===============================================
Não é uma boa idéia rodar mais de uma instância do Window Maker sob
um mesmo usuário ao mesmo tempo (já que o wmaker usa os mesmos arquivos
de configuração). Você pode obter comportamentos inesperados quando o
Window Maker atualizar os seus arquivos de configuração.
Suporte para som
================
O Som é suportado nos sistemas Linux e FreeBSD com o uso de módulos
distribuídos separadamente. Você pode baixá-los no:
http://www.frontiernet.net/~southgat/wmsound
Observe que você deve compilar o Window Maker usando o configure com a
flag --enable-sound e definindo a opção DisableSound para NO.
Suporte ao OpenL**k
===================
Acredito que muitos usuários, principalmente os do mundo acadêmico,
tenham que usar aplicações escritas em toolkits OpenL**k, então o suporte
para estes aplicativos deve ser de algum uso.
Para ativar, use o --enable-openlook quando rodar o configure. Note
que nem tudo está implementado.
As opções implementadas incluem hints de decoração e o push-pin.
Coisas não implementadas incluem _SUN_WINDOW_STATE (the compose led
state stuff), coisas relacionadas ao "drag and drop", cabeçalho (não
tenho certeza do que é) e o string footer.
Por favor me dêem retorno se algo não funcionar. Se a opção já está
implementada, mas não está funcionando por causa de um bug, eu tentarei
corrigí-la. Se é uma característica ainda não implementada e você mencionar
que é importante (ie: não somente cosmética), eu considerarei a sua
implementação.
O estado "out" do pushpin é emulado como um botão de fechar pressionado.
Clique no botão para fazer com que ele fique despressionado, o que
corresponde ao estado "pinned-in" do pushpin. Se você pressionar de novo
o botão de fechar despressionado, ele vai agir como um botão de fechar
normal: vai fechar a janela.
Ajuste da Performance
====================
Se você deseja diminuir o uso de memória pelo Window Maker, aumentar a
performance, e ainda manter uma boa aparência e funcionalidade, siga os
itens abaixo:
- use texturas sólidas para tudo, barras de títulos e menus. Se você quer
um desktop com um belo visual, use o estilo "Traditional".
- desligue o "NewStyle" e o "Superfluous"
- não vincule muitos atalhos ao seu menu e guarde somente coisas essenciais
no menu
- ative o "DisableClip"
- edite o wconfig.h e desative o NUMLOCK_HACK e as opções que você não
usa mesmo (tenha em mente que alguns dos #defines podem não funcionar,
já que eles não estão completamente suportados). Certifique-se de sempre
manter o NumLock e o ScrollLock desligados.
- ligue a opção "DisableAnimations". Você pode também usar o #undefine
ANIMATIONS no arquivo config.h
- verifique as entradas padrão "IconPath" e "PixmapPath" para que contenham
somente os paths que você realmente possua no seu sistema.
- não use imagens grandes no seu background root
- remova o suporte para formatos de imagens que você não usa
- para reduzir o uso de memória, desative o cache de ícones, definindo a
variável de ambiente RIMAGE_CACHE para 0. Se você deseja melhorar o
desempenho perdendo só um pouco de memória, defina essa variável para
o valor correspondente ao número de ícones que você usa.
Controle de Mouse pelo Teclado
==============================
Muitas pessoas perguntam sobre adicionar o controle do mouse pelo teclado,
como no fvwm, mas o Window Maker não possui tal opção. A extensão XKB
suporta a simulação do mouse pelo teclado, de uma maneira muito mais
poderosa do que qualquer outra simulação realizada por um gerenciador de
janelas.
Para ativá-la, aperte a combinação Control+Shift+NumLock ou Shift+NumLock.
Você deve então ouvir um beep. Para desativá-la, faça a mesma coisa.
Para controlar com o mouse, use as seguintes teclas do keypad:
- 4 (seta esquerda), 7 (Home), 8 (seta para cima), 9 (PgUp), 6 (seta direita),
3 (PgDn), 2 (seta para baixo) e 1 (End) move o mouse para as direções
correspondentes;
- segurar as teclas acima e depois segurar a tecla 5 vai fazer o ponteiro
se mover mais rápido;
- / vai selecionar o primeiro botão do mouse (botão esquerdo);
- * vai selecionar o segundo botão do mouse (botão do meio);
- - vai selecionar o terceiro botão do mouse (botão direito);
- 5 vai fazer um clique com o botão do mouse que foi selecionado;
- + vai fazer um duplo-clique com o botão do mouse que foi selecionado;
- 0 (Ins) vai clicar e segurar o botão do mouse selecionado;
- . (Del) vai liberar o botão do mouse selecionado que foi previamente
clicado com a tecla 0 (Ins).
Os valores das teclas acima funcionam com um servidor X XFree86 3.2 (X11R6.1)
mas nosso alcance pode variar.
Como fazer um backtrace com o gdb
=================================
Os backtraces nos ajudam a arrumar bugs que fazem com que o Window Maker
trave. Se você achar um bug que trave o Window Maker, por favor envie o
backtrace com o relato do bug.
Para fazer um backtrace útil, você precisa de um arquivo core
com informações de depuração produzidas pelo Window Maker quando ele
travar. O padrão do Window Maker é iniciar um outro gerenciador
de janelas quando ele travar, o que não gerará um arquivo core. Você
precisa editar o arquivo src/wconfig.h *depois* de ter rodado o configure
e mudar a linha que se parece com o seguinte:
#undef NO_EMERGENCY_AUTORESTART
para:
#define NO_EMERGENCY_AUTORESTART
Depois, no diretório src, digite:
make clean
make CFLAGS=-g
make install
e espere o Window Maker ser instalado.
Depois de instalado o Window Maker, inicie o X e reproduza o bug fazendo
com que o Window Maker trave. Quando ele travar, vá até o diretório
onde você compilou o wmaker e digite o seguinte comando na sua shell:
script
cd src
gdb .libs/wmaker path_ao_arquivo_core
Depois, no prompt do gdb, digite "bt". Saia do gdb digitando "quit"
e depois no prompt da shell, digite "exit".
O arquivo chamado typescript conterá o backtrace.
Direitos Autorais & Disclaimers
===============================
O Window Maker é registrado por Alfredo K. Kojima e é licenciado pela Licença
Pública Geral GNU. Leia o arquivo COPYING para ler a licença completa.
Os ícones que são distribuídos com esse programa foram criados por Marco
van Hylckama Vlieg são licenciados pela OpenContent License. Leia o
arquivo COPYING.OPL para a licença completa.
NeXT, OpenStep e NEXTSTEP são marcas da NeXT Computer, Inc.
Todas as outras marcas são propriedade dos respectivos donos.
Os autores se reservam no direito de fazer alterações no software sem
qualquer aviso prévio.
Autores
=======
Alfredo K. Kojima <kojima@windowmaker.org>
Dan Pascu <dan@windowmaker.org>
]d <id@windowmaker.org>
Por favor não nos perguntem coisas antes de ler a documentação (o FAQ,
este arquivo e os arquivos INSTALL), ou sobre coisas "legais" que você
viu em screenshots de desktops.
O arquivo AUTHORS contem uma lista de pessoas que contribuíram com o projeto.
O nome das pessoas que ajudaram com a tradução pode ser achado no po/README e
Window Maker/README
Se você tem algum comentário, correção ou deseja relatar bugs (junto com
o BUGFORM) mande-os para developers@windowmaker.org
Traduzido por: Ricardo Sartori <sartori@inf.ufsc.br>

63
TODO
View File

@@ -1,50 +1,61 @@
remake wrlib rule to not compile with -fomit-frame-pointer and stuff
if its added to CFLAGS
Do ASAP:
========
- fix bestvisual selection code. Broken.
- add a dialog to let user choose if we should restart, restart twm or continue crashing on crash. Do not forget to check if wmaker is already fully running.
- fix stacking. buggy again
+ ICCCM compliant stuff: find what is missing
- WM_COLORMAP_NOTIFY clientmessage
- fix RemakeStackList() to account for transient windows
- change CommitStacking() on AddToStackingList() to more optimized thing
- differential update of appmenu
- make unhide app map windows in the same stacking order they were before
hiding
- blink border of clients with UrgencyHint set between red and black
- finish session stuff
- add multiline support for balloons
- remove colors_per_channel stuff from wmaker after?
+ finish the ability to browse for files/dirs in the WPrefs menu editor
+ finish selections and DND stuff in WINGs
Need to do:
===========
- allow user to select/restore default root menu from wprefs
- support for X11R6.4 extension for getting extra visual info in wrlib's
automatic best context guessing
- docklet to control AccessX (keyboard accessibility) functions
- rewrite all redundant stuff to use WINGs
- resizebartexture option
- add function to directly make a thumbnail of an image, using the
functionality provided by the image libraries to load a minimal
amount of data.
- clickonclientarearaisewindow
- edge resistance (with timer)
- save client supplied icons in ~/GNUstep/.AppInfo/ClientIcons/ and
use them by default
- GNUstepWMAttributes update in propertynotify
+ investigate memory leaks
- make Docked apps with WM_CLIENT_MACHINE be launched from respective
machines (also put a marking showing it's remote launched)
- handle change of CLIENT_LEADER property
- rewrite defaults/wdefaults stuff to use WINGs UD stuff. Search list:
~/G/D/WindowMaker /u/l/s/W/D/WindowMaker built-in-defaults
- remake internal string processing to use wc?
- -statefile cmd arg to specify path for WMState file (multiple instance
support)
- remake internal string processing to use wchar? unicode?
- add new file for stuff like default commands and dnd commands for
docked apps, balloons for the dock etc
- check whether apps with name.class set to empty strings should be treated
like if name.class is NULL.NULL
- review the defaults handling code (not to reread after we update a
domain if possible, check WINGs apps updating WMWindowAttributes after
start making screen to flash on update)
Maybe some day:
===============
- virtual desktop
- virtual workspace
- optimize for size
- make dithering in 8bpp better
Never: (so, dont even bother to ask)
======
- different themes for each workspace. Unless you give us a SGI/Power Onyx
with 2 CPUs ;). Different workspacebacks for each workspace is being
considered, but don't hold your breath.
with 2 CPUs ;).
- anything that requires the mouse pointer to be jumped by WindowMaker to
somewhere. This is *terrible* behaviour. And it's not just IMO.
somewhere. This is *terrible* behaviour. And it's not just IMO.
- rewrite to use Gtk... I wont even bother to explain why...
- ICCCM 2.0: ICCCM 2.0 (not 1.0, which is what everybody supports so so) is
a relatively new standard and nobody, AFAIK, complies with it (not even
twm as people tend to think). It has some neat things, but many of the new
stuff is really weird and tricky to implement, not to say unworthy (read the
specs and you'll see). This is not bad, since I think it is very unlikely
that a client that requires it exists... Anyway, if we get an "official"
sample implementation (twm?) it might be supported. Maybe dtwm supports
it? I dont know...

5
WINGs/.cvsignore Normal file
View File

@@ -0,0 +1,5 @@
Makefile Makefile.in
get-wings-flags get-wutil-flags
.libs
.psrc .inslog2 tca.map tca.log
*.rpt

3
WINGs/BUGS Normal file
View File

@@ -0,0 +1,3 @@
- filepanel does not reread / . If you add new files in / they will not be
visible until the program is restarted. Closing and reopening the file
panel does not help.

View File

@@ -1,3 +1,483 @@
Changes since wmaker 0.80.0:
............................
- fixed a bug in wfindfile() (rewrote wfindfile() with better logic).
- separated the font caches for normal fonts and fontsets in WINGs (they can
have the same names and collide in the cache giving unwanted results)
- fixed labels not to display '\n' as a character if multiple '\n' are passed
but just skip to the next line.
- better warning when importing non-digit characters in PropList Data.
- rewrote WMBox to use a WMArray for subviews. with this change fixed a bug
about arranging subviews after removing one and a memleak occuring in the
same case.
- Fixed WMGetViewScreenPosition() to consider the window decorations.
- Added ability to enable/disable individual WMTableViewItems.
- Fixed textfields regarding interpretation of special keys with modifiers.
- Fixed some functions that accept a boolean flag as a paramater, to set only
1 or 0 for the flag value, not the flag passed by the user.
- Added 2 functions to retrieve the default system fonts:
WMDefaultSystemFont(WMScreen *scr) and WMDefaultBoldSystemFont(WMScreen *scr)
- Added WMSetButtonImageDimsWhenDisabled() and WMGetButtonEnabled()
- Cleaned-up the header files of functions/vars declared but not implemented
- Added WMGetTextFieldDelegate()
Changes since wmaker 0.70.0:
............................
- added an internal strcasecmp() (only on systems where is not present)
- removed some redundant includes of ../src/config.h when wconfig.h is
included too
- removed a wsyserror() message when reading a property list from file
(the programmer should decide if to give that message or just ignore).
- added a 'Bool recursive' flag to WMMergePLDictionaries()
- added WMSubtractPLDictionaries()
Changes since wmaker 0.65.0:
............................
- fixed problem with WINGs based apps exiting with a "X_RotateProperties"
related error when text was selected in a textfiled.
- moved wstrdup(), wstrconcat() and wstrappend() from memory.c to string.c
- added property list handling code making libPropList unnecessary and
obsolete. Backward compatibility is provided through the
WINGs/proplist-compat.h header file which has #defines from old libPropList
function names to new function names with minimal changes. Read this
header file and the NEWS file for more details about this subject.
- Renamed WMGetUDAllKeys() to WMGetUDKeys()
Changes since wmaker 0.64.0:
............................
- made programmatic scroller changes send notifications
- replaced WMSetBoxExpandsToParent with WMSetViewExpands...
- added WMGetLabelFont()
- added WMAddPersistentTimerHandler()
- Moved all internal handlers (timer, idle and input) to handlers.c
- simplified wevent.c and wutil.c.
- fixed handling of input with poll (was broken)
- fixed mem leak that occured when input handling was done with poll
- simpler and more straightforward event handling for timer, idle, input
and X events (also fixed some problems the old handling logic had)
- moved timer, idle and input handler definitions and prototypes from
WINGs.h to WUtil.h because they're not GUI related.
- better and more robust handling of events (timer, idle, input, X) in
WMMaskEvent(). Also fixed a bug where input and timer events were not
treated for undefined periods of time under some circumstances.
- fixed secure textfields not to allow text selection, to avoid compromising
sensitive information by pasting it to a terminal.
- replaced wmkrange(), wmkpoint() and wmksize() functions with macros.
- added WMRemoveFromArrayMatching(array, match, cdata), which will remove the
first element in the array that is matched by match(item, cdata)==True.
- added WMArrayFirst(), WMArrayLast(), WMArrayNext() and WMArrayPrevious()
functions and also WM_ITERATE_ARRAY() and WM_ETARETI_ARRAY() macros, to make
interfaces to WMBag and WMArray similar and to make life a little simpler
when iterating through all elements of an array.
- replaced bags with arrays wherever appropriate. This will improve
performance a bit.
- replaced some recursive code with iterative code in selection.c
- added WMCreateBlendedPixmapFromRImage()
- small API change:
1. Renamed WMSetApplicationIconImage(), WMGetApplicationIconImage() and
WMSetWindowMiniwindowImage() to respectively WMSetApplicationIconPixmap(),
WMGetApplicationIconPixmap() and WMSetWindowMiniwindowPixmap()
They operate on a WMPixmap which is practically an X Pixmap with no alpha
channel information and the new name is more suggestive and also leaves
room for the new functions added for operating on images with alpha info.
2. Added WMSetApplicationIconImage() and WMGetApplicationIconImage() which
operate on an RImage and store alpha information too.
3. Added WMCreateApplicationIconBlendedPixmap() which will take the image
set by WMSetApplicationIconImage() and will combine it with a color.
If color is NULL it will blend using the default panel color (#aeaaae)
All these changes will allow WINGs to handle images with alpha blending
correctly in panels and wherever else needed. More about in NEWS.
- updated panels to use the newly available RImages if present and fallback
to old WMPixmaps if not, to properly show alpha blended images.
- replaced some still left malloc's with wmalloc's.
- fixed a bug in WMReparentWidget()
- added WMReparentWidget() to WINGs.h
- fixed a bug that made the scroller knob jump backwards when dragged (this
bug had no relation with the behavior that #define STRICT_NEXT_BEHAVIOUR
attempts to accomplish).
- fixed scrolling direction with mouse wheel for horizontal scroller.
changes since wmaker 0.63.1:
............................
- added WMRunModalLoop() and WMBreakModalLoop()
- added WMSetBoxExpandsToParent()
- added WMRemoveBoxSubview()
- moved WINGs headers in a WINGs subdirectory when installed.
use #include <WINGs/header_file_name> in your application from now on.
Also updated get-{wings|wutil}-flags.
- Fixed a mem leak in WMList.
- Fixed a bug that caused sigsegv for a WMList with more than 32767 items.
- Added an example of how to create a server type program with WMConnection.
- added WMOpenScreen()
changes since wmaker 0.62.1:
............................
- added WRuler widget
- added WText widget (rtf multiline text widget)
Nwanua Elumeze <nwanua@colorado.edu>
- added a new AUTO option for the UseMultiByte option
- added WMRaiseWidget()/WMLowerWidget()
- added missing EscapeTextMovement to textfield delegate/notification
- added WMGetLabelText()
- added WMReparentWidget()
- added WMCreateTabViewItem()
- added W_CreateUnmanagedTopView()
- added wtokenjoin(), wtokensplit(), wtokenfree(), wtrimspace()
- added WMWidgetIsMapped()
- added WMSetApplicationIconWindow()
- restructured the directory tree. Added Documentation, Examples and Tests
subdirectories
- removed WMArrayBag and reorganized WMTreeBag to be WMBag.
- added WMArray class.
- added WMSetWindowUserPosition()
- added WMGetListSelectedItems()
- added WMSetListAllowMultipleSelection(), WMListAllowsMultipleSelection().
- added WMSetListAllowEmptySelection(), WMListAllowsEmptySelection().
- WMListSelectionDidChangeNotification passes NULL as the notification
client data (previously passed the selected item row).
- added WMUnselectListItem(), WMSelectAllListItems(), WMUnselectAllListItems()
- better behavior of wheel mices in WMList. Simple mouse wheel events
will scroll by 1/3 of the WMList height. Using Shift as a modifier will
scroll line by line, while using Control as a modifier will scroll page
by page.
- better behavior of WMScroller regarding mouse wheel events. 'Shift' modifier
will scroll line by line, while 'Control' modifier will scroll page by page.
- fixed some buffer overflow allowing bugs.
- added WSDecrementWheel and WSIncrementWheel for handling mouse wheel in
scrollers and scrolled widgets. This should be treated like the WSxxxPage
counterparts, except it should scroll by page_size/3 instead of one full page
- added WMSetBrowserAllowMultipleSelection(), WMSetBrowserAllowEmptySelection()
WMBrowserAllowsMultipleSelection() and WMBrowserAllowsEmptySelection()
- WMBrowser now allows multiple selections.
- Added WMGetBrowserPaths() to retrieve the paths for browsers that allow
multiple selections.
- WMDestroyWidget() now calls WMUnmapWidget() first
- added WMScrollerDidScrollNotification to scroller
- added WMGetScrollViewVisibleRect()
- fixed a mem leak in the browser code.
- renamed wstrappend() to wstrconcat(). wstrconcat(str1, str2) concatenates
str1 with str2 and returns that in a newly malloc'ed string.
Be sure to rename wstrappend with wstrconcat in your code too, else
hazardous things can happen!
- implemented a new wstrappend() function. wstrappend(dst, src) will append
src to dst modifing dst and returning a pointer to it. No new string is
generated, except if dst is NULL, in which case its the same as calling
wstrdup(src).
dst can ONLY be NULL or a dynamically allocated string (obtained from a
call to malloc, realloc, wmalloc, wrealloc, ...). dst CANNOT be a static
or a constant string!
- added wmessage() for printing a variable formatted string to stderr, with
the program name prepended to it. Similar to wwarning(), except that it
doesn't add "warning:" in the output message.
- added WMBox widget
- added WMAddTabViewItemWithView()
- added W_SetViewCursor()
- made Extra widgets library
- added table widget in Extras library
- added WMGetConnectionUnsentData() (WMGetConnectionQueuedData() too as an
alias).
- added WMSetConnectionCloseOnExec() to specify if the socket associated
with a connection survives an exec* call or not. When a new connection is
created using the WMCreate... or WMAcceptConnection() calls, it has the
close on exec flag set automatically to 'True' by the library. Unless
you want to let the socket of some connection to survive across an exec*
call, you need not to call this function.
- removed all the wsyserror() and wwarning() calls from host.c and
connection.c and replaced where appropriate with assertions. If a function
returns some invalid result, you can still get the system error message if
you need, by calling wsyserrorwithcode() and passing WCErrorCode, if
WCErrorCode > 0. If WCErrorCode==0, that is not a system error, and
wsyserrorwithcode() should not be called in this case.
- added WMNextHashEnumeratorKey() to retrieve all keys in some hash enumerator
one by one.
- fixed a bug with mouse wheels scrolling in scrollers even with the widget
fully visible.
- Fixed a memory leak (the destroy function for a view was never called and
as a result the shaded windows didn't go away when closed. The non-shaded
windows were unmapped on close but not destroyed either so they only
apparently went away, but continued to use memory).
changes since wmaker 0.62.0:
............................
- added WMSetWidgetDefaultFont(), WMSetWidgetDefaultBoldFont()
changes since wmaker 0.62.0:
............................
- added WM{S,G}etDataFormat()
- added drag and drop
- changed selection code
- added clientdata to WMFindInBag
- removed SetWindowInitialSize()
- added SetWindowAspectRatio()
- added initial timeout when establishing a connection.
- added WMSetConnectionDefaultTimeout() and WMSetConnectionOpenTimeout();
- added WMGetConnectionTimeoutState()
changes since wmaker 0.61.1:
............................
- WARNING: semantic of bags has changed!
An index assigned to an item will always keep that index unless
you insert an item before it.
For example:
bag = WMCreateBag();
WMSetInBag(bag, 10, "bla");
That code will put "bla" in index 10, instead of 0, as it used to be.
- fixed WMInsertInBag(). It ignored index, and always put the new item at end.
- added WMSaveUserDefaults().
- rewrote WMPopUpButton to use WMMenuItem
- added WMGetPopUpButtonMenuItem(WMPopUpButton *bPtr, int index)
- WMSortListItemsWithComparer(WMList *lPtr, (int)(f)(const void*, const void*))
- WMSortBrowserColumnWithComparer()
- fixed bug with sorting list items.
- fixed bug in handling keyboard input associated with selection and
notification sending.
- filepanel puts dirs on top of list (Wolff <wolff@cybercable.fr>)
- added WMReplaceInBag (Wolff <wolff@cybercable.fr>)
- added vertical views and multiple views in WMSplitView (Wolff <wolff@cybercable.fr>)
- changed values of parameter values of WMSplitViewConstrainProc()
- configurable default fontsize patch (Igor P. Roboul <igor@mordor.myip.org>)
- fixed a bug that crashed the programm when a popup button was scrolled.
- fixed a bug that caused incorrect drawing position of the popup indicator.
- fixed a bug that prevented selecting no item (-1) in a popup button.
- an assertion will be raised if the program tries to select a popup button
item that is beyond the total number of items present in the popup button.
- changed names of functions for SplitView to be consistent. Some contained
SubView while other Subview. Now all have Subview.
- fixed a bug in how input events were posted. Establishing 2 or more input
handlers for the same file descriptor, handling different (read/write/except)
events, caused wrong handlers to be called.
- Reimplemented the input and idle handlers with WMBag to avoid a functional
problem with them: inability to remove handlers next to the called one, from
the called handler itself. Trying to do this with the old version caused the
program to crash.
- changed wrealloc behaviour to be like this: new = wrealloc(old, new_size);
1. if old is NULL, return wmalloc(new_size).
2. if new_size is 0, call wfree(old), and return NULL.
3. if both old is a valid pointer and new_size>0, call realloc.
- added wstrerror(int errnum) to return the string associated with errnum.
- new wsyserrorwithcode(int error, const char* fmt, ...), similar to
wsyserror(), but printing the message for the specified error code.
- added 3 new classes: WMData, WMHost and WMConnection
- fixed a big memory leak in the color panel code (from Pascal Hofstee).
- added scrolling to tabview
changes since wmaker 0.61.0:
............................
- added WMGetTextFieldFont()
- escape key in panels (craig nellist <crn@ozemail.com.au>)
- applied patch with fixes and enhancements to textfield
(Franck Wolff <wolff@cybercable.fr>)
- changed WMList to use WMBag internally, instead of a linked list
- replaced WMAddSortedListItem() with WMSortListItems()
- replaced WMAddSortedBrowserItem() with WMSortBrowserColumn()
changes since wmaker 0.60.0:
............................
- added WMScreenWidth() and WMScreenHeight() functions.
- fixed some problems when compiling with non gcc compilers.
- added WMSetTextFieldFont()
- added WMSetButtonImageDefault() (craig nellist <crn@ozemail.com.au>)
- added WMBag (array/list)
- added libWUtil, a library that is a subset of libWINGs. It contains utils
that can be used in writing non-GUI programs. They include: hashes,
notifications, input/idle/timer handlers, user defaults database handling,
memory handling, application resource handling, etc.
All the non-GUI stuff from libWINGs is present.
Still linWINGs contain all this stuff so if you use libWINGs, you don't
need to link against libWUtil too.
One notable aspect of libWUtil is that it has a modified version of the
event handling function. It is named WHandleEvents() and will handle all
input/idle/timer events the app has.
If your app has a permanent input handler (as for example a socket a server
is listening on), then the main loop of the app can be:
while(1) {
WHandleEvents();
}
but if there is no permanent input handler, you need to add some delay to
avoid a too high cpu load by your program:
while(1) {
WHandleEvents();
wusleep(5000);
}
A permanent input handler is one that is established when the program starts
and is present until the program exits.
One that is deleted and later reinstalled, is not considered permanent.
This difference is because if there is some input handler, the function will
block until some event appears, while if there is no input handler the
function will return almost immediately (after handling the timer/idle
stuff).
Except the stuff declared in WUtil.h, the following functions declared in
WINGs.h are also present in libWUtil (you will need to #include <WINGs.h>
if you use one of these):
WMInitializeApplication(char *applicationName, int *argc, char **argv);
WMSetResourcePath(char *path);
WMGetApplicationName();
WMPathForResourceOfType(char *resource, char *ext);
WMAddTimerHandler(int milliseconds, WMCallback *callback, void *cdata);
WMDeleteTimerWithClientData(void *cdata);
WMDeleteTimerHandler(WMHandlerID handlerID);
WMAddIdleHandler(WMCallback *callback, void *cdata);
WMDeleteIdleHandler(WMHandlerID handlerID);
WMAddInputHandler(int fd, int condition, WMInputProc *proc,
void *clientData);
WMDeleteInputHandler(WMHandlerID handlerID);
- added progress indicator widget
- Changed WMSetWindowUPosition() and WMSetWindowUSize() to
WMSetWindowInitialPosition() and WMSetWindowInitialSize() respectively,
for better naming conventions.
changes since wmaker 0.53.0:
............................
- added balloon help
- fixed a bug with setting initial path in browsers.
- added WMSetButtonImageDimsWhenDisabled()
- changed simple callback/notifications to delegate-like stuff. Affected
widgets are:
WMBrowser
- WMSetBrowserFillProc() was replaced with WMSetBrowserDelegate
- WMBrowserDidScrollNotification was replaced with a delegate callback
WMTextField (not completed yet)
The notifications will still work, but using the delegate is preferable
How to convert old code to delegate callbacks:
1 - create a variable (static or dynamic) of the type of the
delegate for the widget type.
2 - Replace the notification observers with the equivalent
delegate callbacks.
3 - Put pointers to the callbacks in the delegate variable.
Take a look in wfilepanel.c to see how it is used there.
- changed W_ViewProcedureTable to delegates
This will only affect user created widgets. If you have a custom
widget, you will need to update the callbacks and the declaration
of the W_ViewProcedureTable variable to be a W_ViewDelegate,
which is declared in WINGsP.h To setup the delegate, assign
the delegate variable to view->delegate.
- WMTextField
Removed all the didChange notifications that were sent when the text
was changed programmatically. Only changes made by user interaction
will be notified now. If you need the old behaviour, send notifications
manually when you change the text.
- added WMTabView
- added WMGetColorPanelColor(WMColorPanel *panel)
- made WMGetUDStringForKey() to only return a reference to the string, not a
wstrdup()'ed copy. DO NOT FREE IT ANYMORE!
- added MultiByteText option to userdefaults file to control use of multibyte
string drawing functions
- renamed WMCreateFont() to WMCreateFontSet()
- renamed WMCreateFontInDefaultEncoding() to WMCreateNormalFont()
- added WMCreateFont() with different semantics
changes since wmaker 0.52.0:
............................
- added int WMGetBrowserMaxVisibleColumns(WMBrowser *bPtr);
changes since wmaker 0.51.2:
............................
- added WMColorWellDidChangeNotification
- added wfindfileinarray()
- fixed bug in window title setting
(MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp>)
changes since wmaker 0.51.1:
............................
- wusergnusteppath() will return a statically allocated string now.
DO NOT FREE IT ANYMORE!!
changes since wmaker 0.51.0:
............................
- applied c++ compat header patch from Martynas Kunigelis <mkunigelis@alna.lt>
- added WMSetTextFieldBeveled()
- removed W_GC() : use WMColorGC() instead
- added WMCreatePixmap()
- changed WMSetTextFieldEnabled() to WMSetTextFieldEditable()
changes since wmaker 0.50.1:
............................
- fixed various bugs
- added patch from Franck Wolff <frawolff@club-internet.fr>, with
many fixes and enhancements
- added notification queues, asynchronous notifications etc.
- added WMSetBrowserDoubleAction()
- fixed list double click action
changes since wmaker 0.50.2:
............................
- added wsetabort() - look WUtil.h
- fixed bug in WMList resize
- added notification sending when changing textfield programatically
- removed WMHideWindow()
- fixed bug in WMCloseWindow()
- added textfield selection patch
- added color panel code
- added auto name completion for the file panel
- added function to select text range, and to set cursor position in text
fields programatically
changes since wmaker 0.20.3:
............................
- added WMSetSliderImage(), WMSetSliderKnobThickness()
- added WMGetListItemHeight()
- added WMListDidScrollNotification
- added WSetColorWellBordered()
- added hacky color dragging in colorwell
- added poll() support in WMNextEvent. WARNING: the stuff needed for
WMAddInputHandler() is not yet implemented for the poll stuff
- added WMSetFilePanelAccessoryView(), WMGetFilePanelAccessoryView()
- added WMSetPopUpButtonEnabled()
- added WMGetLabelImage()
- autoscroll for popup button menus
- added WMDrawPixmap()
- WARNING: changed parameter list for WMListDrawProc
changes since wmaker 0.20.2:
............................
- WMSetBrowserMaxVisibleColumns() - untested
changes since wmaker 0.20.0:
............................
- added generic object field for WMListItem. This is for hanging generic
clientdata
changes since wmaker 0.20.0:
............................

View File

@@ -0,0 +1,3 @@
Makefile Makefile.in
.psrc .inslog2 tca.map tca.log
*.rpt

View File

@@ -0,0 +1,6 @@
## automake input file for WINGs - Documentation
AUTOMAKE_OPTIONS = no-dependencies
EXTRA_DIST = README.connection

View File

@@ -0,0 +1,51 @@
Methods of handling WMConnectionDidDieNotification notification events
(same for WMConnectionDidTimeoutNotification)
----------------------------------------------------------------------
Once your program got this notification (you need to install an observer for
it), there are some ways to handle it:
1. Make your observer enqueue a new notification in the ASAP queue, and the
observer for this new notification (it can be the same function if you
arrange to distinguish between the two cases), should remove the connection.
You can also close the connection before enqueuing the new notification to
the ASAP queue, but is not strictly necessarily, since it will be closed
when the observer for the new enqueued notification will be called and you
will call the close/remove function there. This is just to make sure your
connection will be silent, and won't generate new events until you reach
that point.
This is by far the best method, since it will assure you that if you
enqueue more than one notification to remove the same connection, they will
be coalesced, and called only once.
2. In your observer, put the died/closed connection in an array or bag, and
destroy all the connections present in the array/bag, in your main loop,
after you call the WHandleEvents()/WMHandleEvent(). Also closing the
connection can be done before putting the connection in the array/bag, but
is optional as noted above. In this case you need to make sure you don't
put in the array/bag the same connection more than once, in case the
DieNotification is sent more that once to you. This is automagically solved
by method 1.
3. In case it's your only connection, and you plan to exit if it was closed or
died, then you can safely close/remove it, and exit. As long as you no
longer access it, there is no problem.
4. Make you observer remove the connection. Then make sure that after that
point your code no longer tries to access that connection (this usually
means until your code gets back to the main loop). This is almost always
very hard to achive and subject to hidden errors. I do not recommend this
way of handling the died notification. It is ugly and very complicated to
handle if the program is in a very deeply nested function when it finds out
that the connection died. If you use it and get plenty of SIGSEGVs then you
know why. This method was not presented here to be used, but to show what
should be avoided in dealing with the died notification, in case someone
gets the idea to try it this way.
Note: read/write operations means to use our read/write functions (like
WMGetMessage()/WMSendMessage()), not the C library ones read()/write().
Note2: removing a connection is done by WMDestroyConnection(), while
WMCloseConnection() only closes the socket, and removed any pending
queues and timers on the connection.

View File

@@ -0,0 +1,5 @@
Makefile Makefile.in
connect server fontl puzzle UserTime.plist
.libs
.psrc .inslog2 tca.map tca.log
*.rpt

View File

@@ -0,0 +1,31 @@
## automake input file for WINGs - Examples
AUTOMAKE_OPTIONS = no-dependencies
noinst_PROGRAMS = connect server fontl puzzle
LDADD= $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la \
@INTLIBS@
fontl_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
puzzle_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
connect_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.a
connect_LDADD = $(top_builddir)/WINGs/libWUtil.a @LIBRARY_SEARCH_PATH@ \
@NETLIBS@ @INTLIBS@
server_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.a
server_LDADD = $(top_builddir)/WINGs/libWUtil.a @LIBRARY_SEARCH_PATH@ \
@NETLIBS@ @INTLIBS@
INCLUDES = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ -DDEBUG

19
WINGs/Examples/README Normal file
View File

@@ -0,0 +1,19 @@
Files:
-----
server - server example of using WMConnection. It keeps a database of
timeouts for a group of users, allowing one to add/remove
users and update the timeouts associated with them.
connect - client example of using WMConnection. Works with the server
program above. Just start both without any parameter and
type help in the client to find out how to operate them.
Rest is self explanatory.
puzzle - a nice zuPzel =)
fontl - a map of all characters with their corresponding ascii,
hex, decimal and octal representations.

196
WINGs/Examples/connect.c Normal file
View File

@@ -0,0 +1,196 @@
/*
* WINGs connect.c: example how to create a network client using WMConnection
*
* Copyright (c) 1999-2002 Dan Pascu
*
*/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <WINGs/WINGs.h>
static int initialized = 0;
static void didReceiveInput(ConnectionDelegate *self, WMConnection *cPtr);
static void connectionDidDie(ConnectionDelegate *self, WMConnection *cPtr);
static void didInitialize(ConnectionDelegate *self, WMConnection *cPtr);
static ConnectionDelegate socketDelegate = {
NULL, /* data */
NULL, /* didCatchException */
connectionDidDie, /* didDie */
didInitialize, /* didInitialize */
didReceiveInput, /* didReceiveInput */
NULL /* didTimeout */
};
void
wAbort(Bool foo)
{
exit(1);
}
static char*
getMessage(WMConnection *cPtr)
{
char *buffer;
WMData *aData;
int length;
aData = WMGetConnectionAvailableData(cPtr);
if (!aData)
return NULL;
if ((length=WMGetDataLength(aData))==0) {
WMReleaseData(aData);
return NULL;
}
buffer = (char*)wmalloc(length+1);
WMGetDataBytes(aData, buffer);
buffer[length]= '\0';
WMReleaseData(aData);
return buffer;
}
static void
inputHandler(int fd, int mask, void *clientData)
{
WMConnection *cPtr = (WMConnection*)clientData;
WMData *aData;
char buf[4096];
int n;
if (!initialized)
return;
n = read(fd, buf, 4096);
if (n>0) {
aData = WMCreateDataWithBytes(buf, n);
WMSendConnectionData(cPtr, aData);
WMReleaseData(aData);
}
}
static void
didReceiveInput(ConnectionDelegate *self, WMConnection *cPtr)
{
char *buffer;
buffer = getMessage(cPtr);
if (!buffer) {
fprintf(stderr, "Connection closed by peer.\n");
exit(0);
}
printf("%s", buffer);
wfree(buffer);
}
static void
connectionDidDie(ConnectionDelegate *self, WMConnection *cPtr)
{
WMCloseConnection(cPtr);
fprintf(stderr, "Connection closed by peer.\n");
exit(0);
}
static void
didInitialize(ConnectionDelegate *self, WMConnection *cPtr)
{
int state = WMGetConnectionState(cPtr);
WMHost *host;
if (state == WCConnected) {
host = WMGetHostWithAddress(WMGetConnectionAddress(cPtr));
fprintf(stderr, "connected to '%s:%s'\n",
host?WMGetHostName(host):WMGetConnectionAddress(cPtr),
WMGetConnectionService(cPtr));
initialized = 1;
if (host)
WMReleaseHost(host);
return;
} else {
wsyserrorwithcode(WCErrorCode, "Unable to connect");
exit(1);
}
}
int
main(int argc, char **argv)
{
char *ProgName, *host, *port;
int i;
WMConnection *sPtr;
wsetabort(wAbort);
WMInitializeApplication("connect", &argc, argv);
ProgName = strrchr(argv[0],'/');
if (!ProgName)
ProgName = argv[0];
else
ProgName++;
host = NULL;
port = "34567";
if (argc>1) {
for (i=1; i<argc; i++) {
if (strcmp(argv[i], "--help")==0 || strcmp(argv[i], "-h")==0) {
printf("usage: %s [host [port]]\n\n", ProgName);
exit(0);
} else {
if (!host)
host = argv[i];
else
port = argv[i];
}
}
}
printf("Trying to make connection to '%s:%s'\n",
host?host:"localhost", port);
sPtr = WMCreateConnectionToAddressAndNotify(host, port, NULL);
if (!sPtr) {
wfatal("could not create connection. exiting");
exit(1);
}
WMSetConnectionDelegate(sPtr, &socketDelegate);
/* watch what user types and send it over the connection */
WMAddInputHandler(0, WIReadMask, inputHandler, sPtr);
while (1) {
WHandleEvents();
}
return 0;
}

View File

@@ -1,7 +1,7 @@
/*
* WINGs demo: font lister
*
* Copyright (c) 1998 Alfredo K. Kojima
* Copyright (c) 1998-2002 Alfredo K. Kojima
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,8 +24,8 @@
#include <stdlib.h>
#include <stdio.h>
#include "WINGs.h"
#include "WUtil.h"
#include <WINGs/WINGs.h>
#include <WINGs/WUtil.h>
void
wAbort()

241
WINGs/Examples/puzzle.c Normal file
View File

@@ -0,0 +1,241 @@
#include <stdlib.h>
#include <stdio.h>
#include <WINGs/WINGs.h>
#define MAX_SIZE 10*10
WMWindow *win;
WMButton *Button[MAX_SIZE];
char Map[MAX_SIZE];
int Size = 4;
int MoveCount;
#define MAP(x,y) Map[(x)+(y)*Size]
int WinSize = 120;
Bool CheckWin(void)
{
int i;
for (i = 0; i < Size*Size-1; i++) {
if (Map[i] != i)
return False;
}
return True;
}
void MoveButton(int button, int x, int y)
{
WMMoveWidget(Button[button], x*(WinSize/Size), y*(WinSize/Size));
}
Bool SlideButton(int button)
{
int x, y, done = 0;
/* locate the button */
for (y = 0; y < Size; y++) {
for (x = 0; x < Size; x++) {
if (MAP(x,y) == button) {
done = 1;
break;
}
}
if (done)
break;
}
if (x > 0 && MAP(x-1, y) < 0) {
MAP(x,y) = -1;
MoveButton(button, x-1, y);
MAP(x-1,y) = button;
} else if (x < Size-1 && MAP(x+1, y) < 0) {
MAP(x,y) = -1;
MoveButton(button, x+1, y);
MAP(x+1,y) = button;
} else if (y > 0 && MAP(x, y-1) < 0) {
MAP(x,y) = -1;
MoveButton(button, x, y-1);
MAP(x,y-1) = button;
} else if (y < Size-1 && MAP(x, y+1) < 0) {
MAP(x,y) = -1;
MoveButton(button, x, y+1);
MAP(x,y+1) = button;
} else {
return False;
}
return True;
}
#define SWAP(a,b) {int tmp; tmp=a; a=b; b=tmp;}
void ResetGame(void)
{
int i, x, y, ox, oy;
MoveCount = 0;
for (i = 0; i < Size*Size-1; i++) {
Map[i] = i;
}
Map[i] = -1;
ox = x = Size-1;
oy = y = Size-1;
for (i = 0; i < 1000; i++) {
int ok;
ok = 1;
switch (rand()%4) {
case 0:
if (x > 0) x--; else ok = 0;
break;
case 2:
if (x < Size-1) x++; else ok = 0;
break;
case 1:
if (y > 0) y--; else ok = 0;
break;
case 3:
if (y < Size-1) y++; else ok = 0;
break;
}
if (ok) {
MoveButton(MAP(x,y), ox, oy);
SWAP(MAP(ox, oy), MAP(x, y));
while (XPending(WMScreenDisplay(WMWidgetScreen(win)))) {
XEvent ev;
WMNextEvent(WMScreenDisplay(WMWidgetScreen(win)), &ev);
WMHandleEvent(&ev);
}
ox = x;
oy = y;
}
}
}
void buttonClick(WMWidget *w, void *ptr)
{
char buffer[300];
if (SlideButton((int)ptr)) {
MoveCount++;
if (CheckWin()) {
sprintf(buffer, "You finished the game in %i moves.", MoveCount);
if (WMRunAlertPanel(WMWidgetScreen(w), win, "You Won!", buffer,
"Wee!", "Gah! Lemme retry!", NULL) == WAPRDefault) {
exit(0);
}
ResetGame();
}
}
}
static void resizeObserver(void *self, WMNotification *notif)
{
WMSize size = WMGetViewSize(WMWidgetView(win));
int x, y;
WinSize = size.width;
for (y = 0; y < Size; y++) {
for (x = 0; x < Size; x++) {
if (MAP(x,y) >= 0) {
WMResizeWidget(Button[(int)MAP(x,y)],
WinSize/Size, WinSize/Size);
WMMoveWidget(Button[(int)MAP(x,y)],
x*(WinSize/Size), y*(WinSize/Size));
}
}
}
}
int main(int argc, char **argv)
{
Display *dpy;
WMScreen *scr;
int x, y, i;
WMInitializeApplication("Puzzle", &argc, argv);
dpy = XOpenDisplay("");
if (!dpy) {
printf("could not open display\n");
exit(1);
}
scr = WMCreateScreen(dpy, DefaultScreen(dpy));
win = WMCreateWindow(scr, "puzzle");
WMResizeWidget(win, WinSize, WinSize);
WMSetWindowTitle(win, "zuPzel");
WMSetWindowMinSize(win, 80, 80);
WMSetWindowAspectRatio(win, 2, 2, 2, 2);
WMSetWindowResizeIncrements(win, Size, Size);
WMSetViewNotifySizeChanges(WMWidgetView(win), True);
WMAddNotificationObserver(resizeObserver, NULL,
WMViewSizeDidChangeNotification,
WMWidgetView(win));
for (i = y = 0; y < Size && i < Size*Size-1; y++) {
for (x = 0; x < Size && i < Size*Size-1; x++) {
char buf[32];
WMColor *color;
RColor col;
RHSVColor hsv;
hsv.hue = i*360/(Size*Size-1);
hsv.saturation = 120;
hsv.value = 200;
RHSVtoRGB(&hsv, &col);
color = WMCreateRGBColor(scr, col.red<<8, col.green<<8,
col.blue<<8, False);
MAP(x,y) = i;
Button[i] = WMCreateButton(win, WBTMomentaryLight);
WMSetWidgetBackgroundColor(Button[i], color);
WMReleaseColor(color);
WMSetButtonAction(Button[i], buttonClick, (void*)i);
WMResizeWidget(Button[i], WinSize/Size, WinSize/Size);
WMMoveWidget(Button[i], x*(WinSize/Size), y*(WinSize/Size));
sprintf(buf, "%i", i+1);
WMSetButtonText(Button[i], buf);
WMSetButtonTextAlignment(Button[i], WACenter);
i++;
}
}
WMMapSubwidgets(win);
WMMapWidget(win);
WMRealizeWidget(win);
ResetGame();
WMScreenMainLoop(scr);
return 0;
}

738
WINGs/Examples/server.c Normal file
View File

@@ -0,0 +1,738 @@
/*
* WINGs server.c: example how to create a network server using WMConnection
*
* Copyright (c) 2001-2002 Dan Pascu
*
*/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <WINGs/WINGs.h>
#define _(P) P
#define MAXCMD_SIZE 512
char *SEConnectionShouldBeRemovedNotification = "SEConnectionShouldBeRemovedNotification";
static void didReceiveInput(ConnectionDelegate *self, WMConnection *cPtr);
static void connectionDidDie(ConnectionDelegate *self, WMConnection *cPtr);
static void connectionDidTimeout(ConnectionDelegate *self, WMConnection *cPtr);
extern char *SEConnectionShouldBeRemovedNotification;
static WMUserDefaults *timeDB = NULL;
static char *ServerAddress = NULL;
static char *ServerPort = NULL;
static WMArray *allowedHostList = NULL;
static WMArray *clientConnections = NULL;
static WMConnection *serverPtr = NULL;
static ConnectionDelegate socketDelegate = {
NULL, /* client data */
NULL, /* didCatchException */
connectionDidDie, /* didDie */
NULL, /* didInitialize */
didReceiveInput, /* didReceiveInput */
connectionDidTimeout /* didTimeout */
};
void
wAbort(Bool foo)
{
exit(1);
}
static void
printHelp(char *progname)
{
printf(_("usage: %s [options]\n\n"), progname);
puts(_(" --help print this message"));
puts(_(" --listen [address:]port only listen on the specified address/port"));
puts(_(" --allow host1[,host2...] only allow connections from listed hosts\n"));
puts(_(" By default server listens on all interfaces and port 34567, unless"
" something\nelse is specified with the --listen option. If address is"
" omitted or the keyword\n'Any' is used, it will listen on all interfaces else"
" only on the specified one.\n\nFor example --listen localhost: will"
" listen on the default port 34567, but only\non connections comming"
" in through the loopback interface.\n\n Also by default the server"
" listens to incoming connections from any host,\nunless a list of"
" hosts is given with the --allow option, in which case it will\nreject"
" connections not comming from those hosts.\nThe list of hosts is comma"
" separated and should NOT contain ANY spaces."));
}
static void
enqueueConnectionForRemoval(WMConnection *cPtr)
{
WMNotification *notif;
/*don't release notif here. it will be released by queue after processing */
notif = WMCreateNotification(SEConnectionShouldBeRemovedNotification,
cPtr, NULL);
WMEnqueueNotification(WMGetDefaultNotificationQueue(), notif, WMPostASAP);
}
static int
sendMessage(WMConnection *cPtr, char *message)
{
WMData *aData;
int res;
if (WMGetConnectionState(cPtr)!=WCConnected)
return -1;
aData = WMCreateDataWithBytes(message, strlen(message));
res = WMSendConnectionData(cPtr, aData);
WMReleaseData(aData);
return res;
}
static Bool
enqueueMessage(WMConnection *cPtr, char *message)
{
WMData *aData;
Bool res;
if (WMGetConnectionState(cPtr)!=WCConnected)
return False;
aData = WMCreateDataWithBytes(message, strlen(message));
res = WMEnqueueConnectionData(cPtr, aData);
WMReleaseData(aData);
return res;
}
static unsigned char*
findDelimiter(unsigned char *data, unsigned const char *endPtr)
{
wassertrv(data < endPtr, NULL);
while (data<endPtr && *data!='\n' && *data!='\r' && *data!=';' && *data!='\0')
data++;
if (data < endPtr)
return data;
return NULL;
}
static WMArray*
getAvailableMessages(WMConnection *cPtr)
{
char *ptr, *crtPos, *buffer;
const char *bytes, *endPtr;
WMData *aData, *receivedData, *holdData;
WMRange range;
WMArray *messages;
int length;
receivedData = WMGetConnectionAvailableData(cPtr);
if (!receivedData)
return NULL;
if ((length=WMGetDataLength(receivedData))==0) {
WMReleaseData(receivedData);
return NULL;
}
holdData = (WMData*)WMGetConnectionClientData(cPtr);
if (holdData) {
WMAppendData(holdData, receivedData);
WMReleaseData(receivedData);
WMSetConnectionClientData(cPtr, NULL);
aData = holdData;
} else {
aData = receivedData;
}
length = WMGetDataLength(aData);
bytes = (char*)WMDataBytes(aData);
endPtr = bytes + length;
messages = WMCreateArrayWithDestructor(1, wfree);
crtPos = (char*)bytes;
while (crtPos<endPtr && (ptr = findDelimiter(crtPos, endPtr))!=NULL) {
range.position = (crtPos - bytes);
range.count = (ptr - crtPos);
if (range.count > MAXCMD_SIZE) {
/* Hmmm... The message is too long. Possibly that someone is
* flooding us, or there is a dumb client which do not know
* who is talking to. */
sendMessage(cPtr, "Command too long\n\r");
WMFreeArray(messages);
WMReleaseData(aData);
WMCloseConnection(cPtr);
enqueueConnectionForRemoval(cPtr);
return NULL;
}
buffer = wmalloc(range.count+1);
WMGetDataBytesWithRange(aData, buffer, range);
buffer[range.count] = '\0';
WMAddToArray(messages, buffer);
crtPos = ptr;
while (crtPos<endPtr && (*crtPos=='\n' || *crtPos=='\r' ||
*crtPos=='\t' || *crtPos=='\0' ||
*crtPos==';' || *crtPos==' ')) {
crtPos++;
}
}
if (crtPos<endPtr) {
range.position = (crtPos - bytes);
range.count = (endPtr - crtPos);
if (range.count > MAXCMD_SIZE) {
/* Flooooooding!!!! */
sendMessage(cPtr, "Message too long\n\r");
WMFreeArray(messages);
WMReleaseData(aData);
WMCloseConnection(cPtr);
enqueueConnectionForRemoval(cPtr);
return NULL;
}
holdData = WMGetSubdataWithRange(aData, range);
WMSetConnectionClientData(cPtr, holdData);
}
WMReleaseData(aData);
if (WMGetArrayItemCount(messages)==0) {
WMFreeArray(messages);
messages = NULL;
}
return messages;
}
static void
complainAboutBadArgs(WMConnection *cPtr, char *cmdName, char *badArgs)
{
char *buf = wmalloc(strlen(cmdName) + strlen(badArgs) + 100);
sprintf(buf, _("Invalid parameters '%s' for command %s. Use HELP for"
" a list of commands.\n"), badArgs, cmdName);
sendMessage(cPtr, buf);
wfree(buf);
}
static void
sendUpdateMessage(WMConnection *cPtr, char *id, int time)
{
char *buf = wmalloc(strlen(id) + 100);
sprintf(buf, "%s has %i minutes left\n", id, time);
sendMessage(cPtr, buf);
wfree(buf);
}
static void
showId(WMConnection *cPtr)
{
sendMessage(cPtr, "Server example based on WMConnection\n");
}
static void
showHelp(WMConnection *cPtr)
{
char *buf = wmalloc(strlen(WMGetApplicationName()) + 16);
sprintf(buf, _("%s commands:\n\n"), WMGetApplicationName());
enqueueMessage(cPtr, _("\n"));
enqueueMessage(cPtr, buf);
enqueueMessage(cPtr, _("GET <id>\t- return time left (in minutes) "
"for user with id <id>\n"));
enqueueMessage(cPtr, _("SET <id> <time>\t- set time limit to <time> "
"minutes for user with id <id>\n"));
enqueueMessage(cPtr, _("ADD <id> <time>\t- add <time> minutes "
"for user with id <id>\n"));
enqueueMessage(cPtr, _("SUB <id> <time>\t- subtract <time> minutes "
"for user with id <id>\n"));
enqueueMessage(cPtr, _("REMOVE <id>\t- remove time limitations for "
"user with id <id>\n"));
enqueueMessage(cPtr, _("LIST\t\t- list all users and their "
"corresponding time limit\n"));
enqueueMessage(cPtr, _("ID\t\t- returns the Time Manager "
"identification string\n"));
enqueueMessage(cPtr, _("EXIT\t\t- exits session\n"));
enqueueMessage(cPtr, _("QUIT\t\t- exits session\n"));
enqueueMessage(cPtr, _("HELP\t\t- show this message\n\n"));
/* Just flush the queue we made before */
WMFlushConnection(cPtr);
wfree(buf);
}
static void
listUsers(WMConnection *cPtr)
{
WMPropList *userList;
char *id;
int i, time;
userList = WMGetUDKeys(timeDB);
for (i=0; i<WMGetPropListItemCount(userList); i++) {
id = WMGetFromPLString(WMGetFromPLArray(userList, i));
time = WMGetUDIntegerForKey(timeDB, id);
sendUpdateMessage(cPtr, id, time);
}
WMReleasePropList(userList);
}
static void
setTimeForUser(WMConnection *cPtr, char *cmdArgs)
{
char *id;
int i, time;
id = wmalloc(strlen(cmdArgs));
if (sscanf(cmdArgs, "%s %d", id, &time)!=2) {
complainAboutBadArgs(cPtr, "SET", cmdArgs);
wfree(id);
return;
}
if (time<0)
time = 0;
WMSetUDIntegerForKey(timeDB, time, id);
for (i=0; i<WMGetArrayItemCount(clientConnections); i++) {
cPtr = WMGetFromArray(clientConnections, i);
sendUpdateMessage(cPtr, id, time);
}
wfree(id);
}
static void
addTimeToUser(WMConnection *cPtr, char *cmdArgs)
{
char *id;
int i, time, newTime;
id = wmalloc(strlen(cmdArgs));
if (sscanf(cmdArgs, "%s %d", id, &time)!=2) {
complainAboutBadArgs(cPtr, "ADD", cmdArgs);
wfree(id);
return;
}
newTime = WMGetUDIntegerForKey(timeDB, id) + time;
if (newTime<0)
newTime = 0;
WMSetUDIntegerForKey(timeDB, newTime, id);
for (i=0; i<WMGetArrayItemCount(clientConnections); i++) {
cPtr = WMGetFromArray(clientConnections, i);
sendUpdateMessage(cPtr, id, newTime);
}
wfree(id);
}
static void
subTimeFromUser(WMConnection *cPtr, char *cmdArgs)
{
char *id;
int i, time, newTime;
id = wmalloc(strlen(cmdArgs));
if (sscanf(cmdArgs, "%s %d", id, &time)!=2) {
complainAboutBadArgs(cPtr, "SUB", cmdArgs);
wfree(id);
return;
}
newTime = WMGetUDIntegerForKey(timeDB, id) - time;
if (newTime<0)
newTime = 0;
WMSetUDIntegerForKey(timeDB, newTime, id);
for (i=0; i<WMGetArrayItemCount(clientConnections); i++) {
cPtr = WMGetFromArray(clientConnections, i);
sendUpdateMessage(cPtr, id, newTime);
}
wfree(id);
}
static void
removeTimeForUser(WMConnection *cPtr, char *cmdArgs)
{
char *ptr;
int i;
if (cmdArgs[0]=='\0') {
sendMessage(cPtr, _("Missing parameter for command REMOVE."
" Use HELP for a list of commands.\n"));
return;
}
ptr = cmdArgs;
while (*ptr && *ptr!=' ' && *ptr!='\t')
ptr++;
*ptr = '\0';
WMRemoveUDObjectForKey(timeDB, cmdArgs);
for (i=0; i<WMGetArrayItemCount(clientConnections); i++) {
cPtr = WMGetFromArray(clientConnections, i);
sendUpdateMessage(cPtr, cmdArgs, -1);
}
}
static void
getTimeForUser(WMConnection *cPtr, char *cmdArgs)
{
char *ptr;
int time;
if (cmdArgs[0]=='\0') {
sendMessage(cPtr, _("Missing parameter for command GET."
" Use HELP for a list of commands.\n"));
return;
}
ptr = cmdArgs;
while (*ptr && *ptr!=' ' && *ptr!='\t')
ptr++;
*ptr = '\0';
if (WMGetUDObjectForKey(timeDB, cmdArgs)!=NULL)
time = WMGetUDIntegerForKey(timeDB, cmdArgs);
else
time = -1;
sendUpdateMessage(cPtr, cmdArgs, time);
}
static void
handleConnection(WMConnection *cPtr)
{
char *command, *ptr, *cmdArgs, *buffer;
WMArray *commands;
int i;
commands = getAvailableMessages(cPtr);
if (!commands)
return;
for (i=0; i<WMGetArrayItemCount(commands); i++) {
command = WMGetFromArray(commands, i);
while (*command && (*command==' ' || *command=='\t'))
command++;
ptr = command;
while(*ptr && *ptr!=' ' && *ptr!='\t')
ptr++;
if (*ptr) {
*ptr = '\0';
ptr++;
}
while (*ptr && (*ptr==' ' || *ptr=='\t'))
ptr++;
cmdArgs = ptr;
fprintf(stderr, "Command: '%s', args: '%s'\n", command, cmdArgs);
if (strcasecmp(command, "quit")==0 || strcasecmp(command, "exit")==0) {
sendMessage(cPtr, "Bye\n");
WMCloseConnection(cPtr);
enqueueConnectionForRemoval(cPtr);
WMFreeArray(commands);
return;
} else if (strcasecmp(command, "id")==0) {
showId(cPtr);
} else if (strcasecmp(command, "help")==0) {
showHelp(cPtr);
} else if (strcasecmp(command, "list")==0) {
listUsers(cPtr);
} else if (strcasecmp(command, "set")==0) {
setTimeForUser(cPtr, cmdArgs);
} else if (strcasecmp(command, "add")==0) {
addTimeToUser(cPtr, cmdArgs);
} else if (strcasecmp(command, "sub")==0) {
subTimeFromUser(cPtr, cmdArgs);
} else if (strcasecmp(command, "remove")==0) {
removeTimeForUser(cPtr, cmdArgs);
} else if (strcasecmp(command, "get")==0) {
getTimeForUser(cPtr, cmdArgs);
} else {
buffer = wmalloc(strlen(command) + 100);
sprintf(buffer, _("Unknown command '%s'. Try HELP for"
" a list of commands.\n"), command);
sendMessage(cPtr, buffer);
wfree(buffer);
}
}
WMFreeArray(commands);
}
static Bool
isAllowedToConnect(WMConnection *cPtr)
{
WMHost *hPtr;
int i;
if (allowedHostList == NULL)
return True; /* No list. Allow all by default */
hPtr = WMGetHostWithAddress(WMGetConnectionAddress(cPtr));
for (i=0; i<WMGetArrayItemCount(allowedHostList); i++) {
if (WMIsHostEqualToHost(hPtr, WMGetFromArray(allowedHostList, i))) {
WMReleaseHost(hPtr);
return True;
}
}
WMReleaseHost(hPtr);
return False;
}
static void
didReceiveInput(ConnectionDelegate *self, WMConnection *cPtr)
{
if (cPtr == serverPtr) {
WMConnection *newPtr = WMAcceptConnection(cPtr);
if (newPtr) {
if (isAllowedToConnect(newPtr)) {
WMSetConnectionDelegate(newPtr, &socketDelegate);
WMSetConnectionSendTimeout(newPtr, 120);
WMAddToArray(clientConnections, newPtr);
} else {
sendMessage(newPtr, "Sorry, you are not allowed to connect.\n");
WMDestroyConnection(newPtr);
}
}
} else {
/* Data arriving on an already-connected socket */
handleConnection(cPtr);
}
}
static void
connectionDidTimeout(ConnectionDelegate *self, WMConnection *cPtr)
{
WMHost *hPtr;
if (cPtr == serverPtr) {
wfatal(_("The server listening socket did timeout. Exiting."));
exit(1);
}
hPtr = WMGetHostWithAddress(WMGetConnectionAddress(cPtr));
wwarning(_("Connection with %s did timeout. Closing connection."),
WMGetHostName(hPtr));
WMReleaseHost(hPtr);
enqueueConnectionForRemoval(cPtr);
}
static void
connectionDidDie(ConnectionDelegate *self, WMConnection *cPtr)
{
if (cPtr == serverPtr) {
/* trouble. server listening port itself died!!! */
wfatal(_("The server listening socket died. Exiting."));
exit(1);
}
enqueueConnectionForRemoval(cPtr);
}
static void
removeConnection(void *observer, WMNotification *notification)
{
WMConnection *cPtr = (WMConnection*)WMGetNotificationObject(notification);
WMData *data;
WMRemoveFromArray(clientConnections, cPtr);
if ((data = (WMData*)WMGetConnectionClientData(cPtr))!=NULL)
WMReleaseData(data);
WMDestroyConnection(cPtr);
}
static void
updatedDomain(void *observer, WMNotification *notification)
{
wmessage("defaults domain file changed on disk. synchronizing.");
}
#if 0
static Bool
isDifferent(char *str1, char *str2)
{
if ((!str1 && !str2) || (str1 && str2 && strcmp(str1, str2)==0))
return False;
return True;
}
#endif
int
main(int argc, char **argv)
{
int i;
wsetabort(wAbort);
WMInitializeApplication("server", &argc, argv);
if (argc>1) {
for (i=1; i<argc; i++) {
if (strcmp(argv[i], "--help")==0) {
printHelp(argv[0]);
exit(0);
} else if (strcmp(argv[i], "--listen")==0) {
char *p;
if ((p = strchr(argv[++i], ':')) != NULL) {
*p = 0;
ServerAddress = wstrdup(argv[i]);
ServerPort = wstrdup(p+1);
*p = ':';
if (ServerAddress[0] == 0) {
wfree(ServerAddress);
ServerAddress = NULL;
}
if (ServerPort[0] == 0) {
wfree(ServerPort);
ServerPort = "34567";
}
} else if (argv[i][0]!=0) {
ServerPort = argv[i];
}
} else if (strcmp(argv[i], "--allow")==0) {
char *p, *ptr;
int done;
WMHost *hPtr;
ptr = argv[++i];
done = 0;
while (!done) {
if ((p = strchr(ptr, ',')) != NULL) {
*p = 0;
}
if (*ptr != 0) {
hPtr = WMGetHostWithName(ptr);
if (hPtr) {
if (!allowedHostList)
allowedHostList = WMCreateArray(4);
WMAddToArray(allowedHostList, hPtr);
} else {
wwarning(_("Unknown host '%s'. Ignored."), ptr);
}
}
if (p!=NULL) {
*p = ',';
ptr = p+1;
} else {
done = 1;
}
}
} else {
printf(_("%s: invalid argument '%s'\n"), argv[0], argv[i]);
printf(_("Try '%s --help' for more information\n"), argv[0]);
exit(1);
}
}
}
timeDB = WMGetDefaultsFromPath("./UserTime.plist");
WMAddNotificationObserver(updatedDomain, NULL,
WMUserDefaultsDidChangeNotification, NULL);
clientConnections = WMCreateArray(4);
/* A NULL ServerAddress means to listen on any address the host has.
* Else if ServerAddress points to a specific address (like "localhost",
* "host.domain.com" or "192.168.1.1"), then it will only listen on that
* interface and ignore incoming connections on the others. */
if (ServerAddress && strcasecmp(ServerAddress, "Any")==0)
ServerAddress = NULL;
if (ServerPort==NULL)
ServerPort = "34567";
printf("Server will listen on '%s:%s'\n", ServerAddress?ServerAddress:"Any",
ServerPort);
printf("This server will allow connections from:");
if (allowedHostList) {
int i;
char *hName;
for (i=0; i<WMGetArrayItemCount(allowedHostList); i++) {
hName = WMGetHostName(WMGetFromArray(allowedHostList, i));
printf("%s'%s'", i==0?" ":", ", hName);
}
printf(".\n");
} else {
printf(" any host.\n");
}
serverPtr = WMCreateConnectionAsServerAtAddress(ServerAddress, ServerPort,
NULL);
if (!serverPtr) {
wfatal("could not create server on `%s:%s`. Exiting.",
ServerAddress ? ServerAddress : "localhost", ServerPort);
exit(1);
}
WMSetConnectionDelegate(serverPtr, &socketDelegate);
WMAddNotificationObserver(removeConnection, NULL,
SEConnectionShouldBeRemovedNotification, NULL);
while (1) {
/* The ASAP notification queue is called at the end of WHandleEvents()
* There's where died connections we get while running through
* WHandleEvents() get removed. */
WHandleEvents();
}
return 0;
}

5
WINGs/Extras/.cvsignore Normal file
View File

@@ -0,0 +1,5 @@
Makefile Makefile.in
.libs
test
.psrc .inslog2 tca.map tca.log
*.rpt

33
WINGs/Extras/Makefile.am Normal file
View File

@@ -0,0 +1,33 @@
## automake input file for WINGs
AUTOMAKE_OPTIONS = no-dependencies
# is this a kluge? if so, how should i do it?
includedir = @includedir@/WINGs
include_HEADERS = wtableview.h wtabledelegates.h
lib_LIBRARIES = libExtraWINGs.a
noinst_PROGRAMS = test
EXTRA_DIST =
libExtraWINGs_a_SOURCES = \
wtableview.c \
wtabledelegates.c \
wtableview.h \
wtabledelegates.h
INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs \
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ -DDEBUG
LDADD= $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la \
@INTLIBS@
test_LDADD = wtableview.o wtabledelegates.o $(LDADD)

134
WINGs/Extras/test.c Normal file
View File

@@ -0,0 +1,134 @@
#include <WINGs/WINGs.h>
#include <stdio.h>
#include "wtableview.h"
#include "wtabledelegates.h"
static char *col1[20] = {0};
static int col2[20];
static char *options[] = {
"Option1",
"Option2",
"Option3",
"Option4",
"Option5"
};
int numberOfRows(WMTableViewDelegate *self, WMTableView *table)
{
return 20;
}
void *valueForCell(WMTableViewDelegate *self, WMTableColumn *column, int row)
{
/*WMTableView *table = (WMTableView*)WMGetTableColumnTableView(column);*/
int i;
if (col1[0] == 0) {
for (i = 0; i < 20; i++) {
char buf[128];
sprintf(buf, "Test row %i", i);
col1[i] = wstrdup(buf);
col2[i] = 0;
}
}
if ((int)WMGetTableColumnId(column) == 1)
return col1[row];
else
return (void*)col2[row];
}
void setValueForCell(WMTableViewDelegate *self, WMTableColumn *column, int row,
void *data)
{
if ((int)WMGetTableColumnId(column) == 1)
col1[row] = data;
else
col2[row] = (int)data;
}
static WMTableViewDelegate delegate = {
NULL,
numberOfRows,
valueForCell,
setValueForCell
};
void clickedTable(WMWidget *w, void *self)
{
int row = WMGetTableViewClickedRow((WMTableView*)self);
WMEditTableViewRow(self, row);
}
int
main(int argc, char **argv)
{
WMScreen *scr;
WMWindow *win;
WMTableView *table;
WMTableColumn *col;
WMTableColumnDelegate *colDeleg;
WMInitializeApplication("test", &argc, argv);
scr = WMOpenScreen(NULL);
XSynchronize(WMScreenDisplay(scr), 1);
win = WMCreateWindow(scr, "eweq");
WMResizeWidget(win, 400, 200);
WMMapWidget(win);
table = WMCreateTableView(win);
WMSetViewExpandsToParent(WMWidgetView(table), 10, 10, 10, 10);
WMSetTableViewBackgroundColor(table, WMWhiteColor(scr));
/*WMSetTableViewGridColor(table, WMGrayColor(scr));*/
WMSetTableViewHeaderHeight(table, 20);
WMSetTableViewDelegate(table, &delegate);
WMSetTableViewAction(table, clickedTable, table);
colDeleg = WTCreateStringEditorDelegate(table);
col = WMCreateTableColumn("Group");
WMSetTableColumnWidth(col, 180);
WMAddTableViewColumn(table, col);
WMSetTableColumnDelegate(col, colDeleg);
WMSetTableColumnId(col, (void*)1);
colDeleg = WTCreateEnumSelectorDelegate(table);
WTSetEnumSelectorOptions(colDeleg, options, 5);
col = WMCreateTableColumn("Package");
WMSetTableColumnWidth(col, 140);
WMAddTableViewColumn(table, col);
WMSetTableColumnDelegate(col, colDeleg);
WMSetTableColumnId(col, (void*)2);
colDeleg = WTCreateBooleanSwitchDelegate(table);
col = WMCreateTableColumn("Bool");
WMSetTableColumnWidth(col, 50);
WMAddTableViewColumn(table, col);
WMSetTableColumnDelegate(col, colDeleg);
WMSetTableColumnId(col, (void*)2);
WMMapWidget(table);
WMRealizeWidget(win);
WMScreenMainLoop(scr);
return 0;
}

View File

@@ -0,0 +1,616 @@
#include <WINGs/WINGsP.h>
#include "wtableview.h"
#include "wtabledelegates.h"
typedef struct {
WMTableView *table;
WMFont *font;
GC gc;
GC selGC;
GC textGC;
} StringData;
typedef struct {
WMTableView *table;
GC selGc;
} PixmapData;
typedef struct {
WMTextField *widget;
WMTableView *table;
WMFont *font;
GC gc;
GC selGC;
GC textGC;
} StringEditorData;
typedef struct {
WMPopUpButton *widget;
WMTableView *table;
WMFont *font;
char **options;
int count;
GC gc;
GC selGC;
GC textGC;
} EnumSelectorData;
typedef struct {
WMButton *widget;
WMTableView *table;
Bool state;
GC gc;
GC selGC;
} BooleanSwitchData;
static char *SelectionColor = "#bbbbcc";
static void stringDraw(WMScreen *scr, Drawable d, GC gc,
GC sgc, GC stgc, WMFont *font, void *data,
WMRect rect, Bool selected)
{
int x, y;
XRectangle rects[1];
Display *dpy = WMScreenDisplay(scr);
x = rect.pos.x + 5;
y = rect.pos.y + (rect.size.height - WMFontHeight(font))/2;
rects[0].x = rect.pos.x+1;
rects[0].y = rect.pos.y+1;
rects[0].width = rect.size.width-1;
rects[0].height = rect.size.height-1;
XSetClipRectangles(dpy, gc, 0, 0, rects, 1, YXSorted);
if (!selected) {
XFillRectangles(dpy, d, gc, rects, 1);
WMDrawString(scr, d, stgc, font, x, y,
data, strlen(data));
} else {
XFillRectangles(dpy, d, sgc, rects, 1);
WMDrawString(scr, d, stgc, font, x, y,
data, strlen(data));
}
XSetClipMask(dpy, gc, None);
}
static void pixmapDraw(WMScreen *scr, Drawable d, GC gc, GC sgc,
WMPixmap *pixmap, WMRect rect, Bool selected)
{
int x, y;
XRectangle rects[1];
Display *dpy = WMScreenDisplay(scr);
WMSize size;
rects[0].x = rect.pos.x+1;
rects[0].y = rect.pos.y+1;
rects[0].width = rect.size.width-1;
rects[0].height = rect.size.height-1;
XSetClipRectangles(dpy, gc, 0, 0, rects, 1, YXSorted);
if (!selected) {
XFillRectangles(dpy, d, gc, rects, 1);
if (pixmap) {
size = WMGetPixmapSize(pixmap);
x = rect.pos.x + (rect.size.width - size.width) / 2;
y = rect.pos.y + (rect.size.height - size.height) / 2;
WMDrawPixmap(pixmap, d, x, y);
}
} else {
XFillRectangles(dpy, d, sgc, rects, 1);
if (pixmap) {
size = WMGetPixmapSize(pixmap);
x = rect.pos.x + (rect.size.width - size.width) / 2;
y = rect.pos.y + (rect.size.height - size.height) / 2;
WMDrawPixmap(pixmap, d, x, y);
}
}
XSetClipMask(dpy, gc, None);
}
/* ---------------------------------------------------------------------- */
static void SECellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
StringEditorData *strdata = (StringEditorData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
stringDraw(WMWidgetScreen(table), d,
strdata->gc, strdata->selGC, strdata->textGC, strdata->font,
WMTableViewDataForCell(table, column, row),
WMTableViewRectForCell(table, column, row),
False);
}
static void selectedSECellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
StringEditorData *strdata = (StringEditorData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
stringDraw(WMWidgetScreen(table), d,
strdata->gc, strdata->selGC, strdata->textGC, strdata->font,
WMTableViewDataForCell(table, column, row),
WMTableViewRectForCell(table, column, row),
True);
}
static void beginSECellEdit(WMTableColumnDelegate *self,
WMTableColumn *column, int row)
{
StringEditorData *strdata = (StringEditorData*)self->data;
WMRect rect = WMTableViewRectForCell(strdata->table, column, row);
void *data = WMTableViewDataForCell(strdata->table, column, row);
WMSetTextFieldText(strdata->widget, (char*)data);
WMMoveWidget(strdata->widget, rect.pos.x, rect.pos.y);
WMResizeWidget(strdata->widget, rect.size.width+1, rect.size.height+1);
WMMapWidget(strdata->widget);
}
static void endSECellEdit(WMTableColumnDelegate *self,
WMTableColumn *column, int row)
{
StringEditorData *strdata = (StringEditorData*)self->data;
char *text;
WMUnmapWidget(strdata->widget);
text = WMGetTextFieldText(strdata->widget);
WMSetTableViewDataForCell(strdata->table, column, row, (void*)text);
}
WMTableColumnDelegate *WTCreateStringEditorDelegate(WMTableView *parent)
{
WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate));
WMScreen *scr = WMWidgetScreen(parent);
StringEditorData *data = wmalloc(sizeof(StringEditorData));
data->widget = WMCreateTextField(parent);
W_ReparentView(WMWidgetView(data->widget),
WMGetTableViewDocumentView(parent),
0, 0);
data->table = parent;
data->font = WMSystemFontOfSize(scr, 12);
data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False));
data->textGC = WMColorGC(WMBlackColor(scr));
data->gc = WMColorGC(WMWhiteColor(scr));
delegate->data = data;
delegate->drawCell = SECellPainter;
delegate->drawSelectedCell = selectedSECellPainter;
delegate->beginCellEdit = beginSECellEdit;
delegate->endCellEdit = endSECellEdit;
return delegate;
}
/* ---------------------------------------------------------------------- */
static void ESCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
EnumSelectorData *strdata = (EnumSelectorData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
int i = (int)WMTableViewDataForCell(table, column, row);
stringDraw(WMWidgetScreen(table), d,
strdata->gc, strdata->selGC, strdata->textGC, strdata->font,
strdata->options[i],
WMTableViewRectForCell(table, column, row),
False);
}
static void selectedESCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
EnumSelectorData *strdata = (EnumSelectorData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
int i = (int)WMTableViewDataForCell(table, column, row);
stringDraw(WMWidgetScreen(table), d,
strdata->gc, strdata->selGC, strdata->textGC, strdata->font,
strdata->options[i],
WMTableViewRectForCell(table, column, row),
True);
}
static void beginESCellEdit(WMTableColumnDelegate *self,
WMTableColumn *column, int row)
{
EnumSelectorData *strdata = (EnumSelectorData*)self->data;
WMRect rect = WMTableViewRectForCell(strdata->table, column, row);
int data = (int)WMTableViewDataForCell(strdata->table, column, row);
wassertr(data < strdata->count);
WMSetPopUpButtonSelectedItem(strdata->widget, data);
WMMoveWidget(strdata->widget, rect.pos.x, rect.pos.y);
WMResizeWidget(strdata->widget, rect.size.width, rect.size.height+1);
WMMapWidget(strdata->widget);
}
static void endESCellEdit(WMTableColumnDelegate *self,
WMTableColumn *column, int row)
{
EnumSelectorData *strdata = (EnumSelectorData*)self->data;
int option;
WMUnmapWidget(strdata->widget);
option = WMGetPopUpButtonSelectedItem(strdata->widget);
WMSetTableViewDataForCell(strdata->table, column, row, (void*)option);
}
WMTableColumnDelegate *WTCreateEnumSelectorDelegate(WMTableView *parent)
{
WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate));
WMScreen *scr = WMWidgetScreen(parent);
EnumSelectorData *data = wmalloc(sizeof(EnumSelectorData));
data->widget = WMCreatePopUpButton(parent);
W_ReparentView(WMWidgetView(data->widget),
WMGetTableViewDocumentView(parent),
0, 0);
data->table = parent;
data->font = WMSystemFontOfSize(scr, 12);
data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False));
data->textGC = WMColorGC(WMBlackColor(scr));
data->gc = WMColorGC(WMWhiteColor(scr));
data->count = 0;
data->options = NULL;
delegate->data = data;
delegate->drawCell = ESCellPainter;
delegate->drawSelectedCell = selectedESCellPainter;
delegate->beginCellEdit = beginESCellEdit;
delegate->endCellEdit = endESCellEdit;
return delegate;
}
void WTSetEnumSelectorOptions(WMTableColumnDelegate *delegate,
char **options, int count)
{
EnumSelectorData *data = (EnumSelectorData*)delegate->data;
int i;
for (i = 0;
i < WMGetPopUpButtonNumberOfItems(data->widget);
i++) {
WMRemovePopUpButtonItem(data->widget, 0);
}
data->options = options;
data->count = count;
for (i = 0; i < count; i++) {
WMAddPopUpButtonItem(data->widget, options[i]);
}
}
/* ---------------------------------------------------------------------- */
static void BSCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
BooleanSwitchData *strdata = (BooleanSwitchData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
int i = (int)WMTableViewDataForCell(table, column, row);
WMScreen *scr = WMWidgetScreen(table);
if (i) {
pixmapDraw(scr, d,
strdata->gc, strdata->selGC, WMGetSystemPixmap(scr, WSICheckMark),
WMTableViewRectForCell(table, column, row), False);
} else {
pixmapDraw(scr, d,
strdata->gc, strdata->selGC, NULL,
WMTableViewRectForCell(table, column, row), False);
}
}
static void selectedBSCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
BooleanSwitchData *strdata = (BooleanSwitchData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
int i = (int)WMTableViewDataForCell(table, column, row);
WMScreen *scr = WMWidgetScreen(table);
if (i) {
pixmapDraw(scr, d,
strdata->gc, strdata->selGC, WMGetSystemPixmap(scr, WSICheckMark),
WMTableViewRectForCell(table, column, row), True);
} else {
pixmapDraw(scr, d,
strdata->gc, strdata->selGC, NULL,
WMTableViewRectForCell(table, column, row), True);
}
}
static void beginBSCellEdit(WMTableColumnDelegate *self,
WMTableColumn *column, int row)
{
BooleanSwitchData *strdata = (BooleanSwitchData*)self->data;
WMRect rect = WMTableViewRectForCell(strdata->table, column, row);
int data = (int)WMTableViewDataForCell(strdata->table, column, row);
WMSetButtonSelected(strdata->widget, data);
WMMoveWidget(strdata->widget, rect.pos.x+1, rect.pos.y+1);
WMResizeWidget(strdata->widget, rect.size.width-1, rect.size.height-1);
WMMapWidget(strdata->widget);
}
static void endBSCellEdit(WMTableColumnDelegate *self,
WMTableColumn *column, int row)
{
BooleanSwitchData *strdata = (BooleanSwitchData*)self->data;
int value;
value = WMGetButtonSelected(strdata->widget);
WMSetTableViewDataForCell(strdata->table, column, row, (void*)value);
WMUnmapWidget(strdata->widget);
}
WMTableColumnDelegate *WTCreateBooleanSwitchDelegate(WMTableView *parent)
{
WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate));
WMScreen *scr = WMWidgetScreen(parent);
BooleanSwitchData *data = wmalloc(sizeof(BooleanSwitchData));
WMColor *color;
data->widget = WMCreateSwitchButton(parent);
W_ReparentView(WMWidgetView(data->widget),
WMGetTableViewDocumentView(parent),
0, 0);
WMSetButtonText(data->widget, NULL);
WMSetButtonImagePosition(data->widget, WIPImageOnly);
WMSetButtonImage(data->widget, NULL);
WMSetButtonAltImage(data->widget, WMGetSystemPixmap(scr, WSICheckMark));
data->table = parent;
color = WMCreateNamedColor(scr, SelectionColor, False);
WMSetWidgetBackgroundColor(data->widget, color);
data->gc = WMColorGC(WMWhiteColor(scr));
data->selGC = WMColorGC(color);
delegate->data = data;
delegate->drawCell = BSCellPainter;
delegate->drawSelectedCell = selectedBSCellPainter;
delegate->beginCellEdit = beginBSCellEdit;
delegate->endCellEdit = endBSCellEdit;
return delegate;
}
/* ---------------------------------------------------------------------- */
static void SCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
StringData *strdata = (StringData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
stringDraw(WMWidgetScreen(table), d,
strdata->gc, strdata->selGC, strdata->textGC, strdata->font,
WMTableViewDataForCell(table, column, row),
WMTableViewRectForCell(table, column, row),
False);
}
static void selectedSCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
StringData *strdata = (StringData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
stringDraw(WMWidgetScreen(table), d,
strdata->gc, strdata->selGC, strdata->textGC, strdata->font,
WMTableViewDataForCell(table, column, row),
WMTableViewRectForCell(table, column, row),
True);
}
WMTableColumnDelegate *WTCreateStringDelegate(WMTableView *parent)
{
WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate));
WMScreen *scr = WMWidgetScreen(parent);
StringData *data = wmalloc(sizeof(StringData));
data->table = parent;
data->font = WMSystemFontOfSize(scr, 12);
data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False));
data->textGC = WMColorGC(WMBlackColor(scr));
data->gc = WMColorGC(WMWhiteColor(scr));
delegate->data = data;
delegate->drawCell = SCellPainter;
delegate->drawSelectedCell = selectedSCellPainter;
delegate->beginCellEdit = NULL;
delegate->endCellEdit = NULL;
return delegate;
}
/* ---------------------------------------------------------------------- */
static void PCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
StringData *strdata = (StringData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
pixmapDraw(WMWidgetScreen(table), d,
strdata->gc, strdata->selGC,
(WMPixmap*)WMTableViewDataForCell(table, column, row),
WMTableViewRectForCell(table, column, row),
False);
}
static void selectedPCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
StringData *strdata = (StringData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
pixmapDraw(WMWidgetScreen(table), d,
strdata->gc, strdata->selGC,
(WMPixmap*)WMTableViewDataForCell(table, column, row),
WMTableViewRectForCell(table, column, row),
True);
}
WMTableColumnDelegate *WTCreatePixmapDelegate(WMTableView *table)
{
WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate));
WMScreen *scr = WMWidgetScreen(table);
StringData *data = wmalloc(sizeof(StringData));
data->table = table;
data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False));
data->gc = WMColorGC(WMWhiteColor(scr));
delegate->data = data;
delegate->drawCell = PCellPainter;
delegate->drawSelectedCell = selectedPCellPainter;
delegate->beginCellEdit = NULL;
delegate->endCellEdit = NULL;
return delegate;
}
/* ---------------------------------------------------------------------- */
static void drawPSCell(WMTableColumnDelegate *self, Drawable d,
WMTableColumn *column, int row, Bool selected)
{
StringData *strdata = (StringData*)self->data;
WMTableView *table = WMGetTableColumnTableView(column);
void **data;
WMPixmap *pix;
char *str;
WMRect rect;
WMSize size;
data = WMTableViewDataForCell(table, column, row);
str = (char*)data[0];
pix = (WMPixmap*)data[1];
rect = WMTableViewRectForCell(table, column, row);
if (pix) {
int owidth = rect.size.width;
size = WMGetPixmapSize(pix);
rect.size.width = size.width;
pixmapDraw(WMWidgetScreen(table),
WMViewXID(WMGetTableViewDocumentView(table)),
strdata->gc, strdata->selGC, pix, rect,
selected);
rect.pos.x += size.width-1;
rect.size.width = owidth-size.width+1;
}
stringDraw(WMWidgetScreen(table), d,
strdata->gc, strdata->selGC, strdata->textGC, strdata->font,
str, rect, selected);
}
static void PSCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
drawPSCell(self, d, column, row, False);
}
static void selectedPSCellPainter(WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d)
{
drawPSCell(self, d, column, row, True);
}
WMTableColumnDelegate *WTCreatePixmapStringDelegate(WMTableView *parent)
{
WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate));
WMScreen *scr = WMWidgetScreen(parent);
StringData *data = wmalloc(sizeof(StringData));
data->table = parent;
data->font = WMSystemFontOfSize(scr, 12);
data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False));
data->textGC = WMColorGC(WMBlackColor(scr));
data->gc = WMColorGC(WMWhiteColor(scr));
delegate->data = data;
delegate->drawCell = PSCellPainter;
delegate->drawSelectedCell = selectedPSCellPainter;
delegate->beginCellEdit = NULL;
delegate->endCellEdit = NULL;
return delegate;
}

View File

@@ -0,0 +1,25 @@
#ifndef _TABLEDELEGATES_H_
#define _TABLEDELEGATES_H_
#ifdef __cplusplus
extern "C" {
#endif
WMTableColumnDelegate *WTCreatePixmapDelegate(WMTableView *table);
WMTableColumnDelegate *WTCreateStringDelegate(WMTableView *table);
WMTableColumnDelegate *WTCreatePixmapStringDelegate(WMTableView *parent);
WMTableColumnDelegate *WTCreateStringEditorDelegate(WMTableView *table);
WMTableColumnDelegate *WTCreateEnumSelectorDelegate(WMTableView *table);
void WTSetEnumSelectorOptions(WMTableColumnDelegate *delegate,
char **options, int count);
WMTableColumnDelegate *WTCreateBooleanSwitchDelegate(WMTableView *parent);
#ifdef __cplusplus
}
#endif
#endif

1234
WINGs/Extras/wtableview.c Normal file

File diff suppressed because it is too large Load Diff

117
WINGs/Extras/wtableview.h Normal file
View File

@@ -0,0 +1,117 @@
#ifndef _WTABLEVIEW_H_
#define _WTABLEVIEW_H_
#ifdef __cplusplus
extern "C" {
#endif
typedef struct W_TableColumn WMTableColumn;
typedef struct W_TableView WMTableView;
extern const char *WMTableViewSelectionDidChangeNotification;
typedef struct WMTableColumnDelegate {
void *data;
void (*drawCell)(struct WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d);
void (*drawSelectedCell)(struct WMTableColumnDelegate *self,
WMTableColumn *column, int row, Drawable d);
void (*beginCellEdit)(struct WMTableColumnDelegate *self, WMTableColumn *column,
int row);
void (*endCellEdit)(struct WMTableColumnDelegate *self, WMTableColumn *column,
int row);
} WMTableColumnDelegate;
typedef struct W_TableViewDelegate {
void *data;
int (*numberOfRows)(struct W_TableViewDelegate *self,
WMTableView *table);
void *(*valueForCell)(struct W_TableViewDelegate *self,
WMTableColumn *column, int row);
void (*setValueForCell)(struct W_TableViewDelegate *self,
WMTableColumn *column, int row, void *value);
} WMTableViewDelegate;
WMTableColumn *WMCreateTableColumn(char *title);
void WMSetTableColumnWidth(WMTableColumn *column, unsigned width);
void WMSetTableColumnConstraints(WMTableColumn *column,
unsigned minWidth, unsigned maxWidth);
void WMSetTableColumnDelegate(WMTableColumn *column,
WMTableColumnDelegate *delegate);
WMTableView *WMGetTableColumnTableView(WMTableColumn *column);
void WMSetTableColumnId(WMTableColumn *column, void *id);
void *WMGetTableColumnId(WMTableColumn *column);
WMTableView *WMCreateTableView(WMWidget *parent);
void WMSetTableViewDataSource(WMTableView *table, void *source);
void *WMGetTableViewDataSource(WMTableView *table);
void WMSetTableViewHeaderHeight(WMTableView *table, unsigned height);
void WMAddTableViewColumn(WMTableView *table, WMTableColumn *column);
void WMSetTableViewDelegate(WMTableView *table, WMTableViewDelegate *delegate);
void WMSetTableViewAction(WMTableView *table, WMAction *action,
void *clientData);
void *WMGetTableViewClickedColumn(WMTableView *table);
int WMGetTableViewClickedRow(WMTableView *table);
WMArray *WMGetTableViewSelectedRows(WMTableView *table);
WMView *WMGetTableViewDocumentView(WMTableView *table);
void WMEditTableViewRow(WMTableView *table, int row);
void WMSelectTableViewRow(WMTableView *table, int row);
void *WMTableViewDataForCell(WMTableView *table, WMTableColumn *column,
int row);
void WMSetTableViewDataForCell(WMTableView *table, WMTableColumn *column,
int row, void *data);
WMRect WMTableViewRectForCell(WMTableView *table, WMTableColumn *column,
int row);
void WMSetTableViewBackgroundColor(WMTableView *table, WMColor *color);
void WMSetTableViewGridColor(WMTableView *table, WMColor *color);
void WMSetTableViewRowHeight(WMTableView *table, int height);
void WMReloadTableView(WMTableView *table);
void WMNoteTableViewNumberOfRowsChanged(WMTableView *table);
void WMScrollTableViewRowToVisible(WMTableView *table, int row);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -2,89 +2,114 @@
AUTOMAKE_OPTIONS = no-dependencies
SUBDIRS = Resources
SUBDIRS = WINGs . po Documentation Resources Examples Extras Tests
LIBLIST= -L$(top_builddir)/wrlib -lwraster @XLFLAGS@ @GFXLIBS@ @XLIBS@ \
-lm @LIBPL_LIBS@
#libWINGs_la_LDFLAGS = -version-info 1:1:0
bin_SCRIPTS = get-wings-flags get-wutil-flags
lib_LIBRARIES = libWINGs.a libWUtil.a
lib_LIBRARIES = libWINGs.a
include_HEADERS = WINGs.h WUtil.h WINGsP.h
noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
testmywidget_LDADD = -L. -lWINGs $(LIBLIST)
fontl_SOURCES = fontl.c
fontl_LDADD = -L. -lWINGs $(LIBLIST)
wtest_SOURCES = wtest.c
wtest_LDADD = -L. -lWINGs $(LIBLIST)
wtest_DEPENDENCIES = libWINGs.a
wmfile_SOURCES = wmfile.c
wmfile_LDADD = -L. -lWINGs $(LIBLIST)
LDADD= libWINGs.a $(top_builddir)/wrlib/libwraster.la @INTLIBS@
wmquery_SOURCES = wmquery.c
wmquery_LDADD = -L. -lWINGs $(LIBLIST)
EXTRA_DIST = logo.xpm
EXTRA_DIST = BUGS
# wbutton.c
libWINGs_a_SOURCES = \
WINGs.h \
WINGsP.h \
array.c \
bagtree.c \
configuration.c \
connection.c \
data.c \
dragdestination.c \
dragsource.c \
error.c \
findfile.c \
handlers.c \
hashtable.c \
host.c \
international.c \
memory.c \
misc.c \
notification.c \
proplist.c \
selection.c \
snprintf.c \
string.c \
tree.c \
userdefaults.c \
usleep.c \
wapplication.c \
wappresource.c \
wballoon.c \
wbox.c \
wbrowser.c \
wbutton.c \
wcolor.c \
wcolorpanel.c \
wcolorwell.c \
wconfig.h \
wevent.c \
wfilepanel.c \
wframe.c \
wfont.c \
wfontpanel.c \
widgets.c \
winputmethod.c \
wlabel.c \
wlist.c \
wmenuitem.c \
wmisc.c \
wpanel.c \
wpixmap.c \
wpopupbutton.c \
wprogressindicator.c \
wruler.c \
wscroller.c \
wscrollview.c \
wslider.c \
wsplitview.c \
wtabview.c \
wtext.c \
wtextfield.c \
wwindow.c \
wview.c \
wwindow.c
libWUtil_a_SOURCES = \
array.c \
bagtree.c \
connection.c \
data.c \
error.c \
findfile.c \
handlers.c \
hashtable.c \
host.c \
international.c \
memory.c \
usleep.c
misc.c \
notification.c \
proplist.c \
snprintf.c \
string.c \
tree.c \
userdefaults.c \
usleep.c \
wapplication.c \
wconfig.h \
wutil.c
##
## Find a better way than $(GFXFLAGS) to inform widgets.c wich of
## tiff or xpm images should be used
INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/src @XCFLAGS@ \
-DRESOURCE_PATH=\"$(datadir)/WINGs\" $(GFXFLAGS) -DDEBUG \
@LIBPL_INC_PATH@
CPPFLAGS = @CPPFLAGS@ -DLOCALEDIR=\"$(NLSDIR)\"
INCLUDES = -I$(top_srcdir)/WINGs/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ -DDEBUG
wcolorpanel.o: wcolorpanel.c
$(COMPILE) -c -DRGBTXT="\"@X_LIBRARY_PATH@/X11/rgb.txt\"" $<

View File

@@ -1,513 +0,0 @@
# Makefile.in generated automatically by automake 1.3 from Makefile.am
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = /bin/sh
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DISTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
CC = @CC@
CPP_PATH = @CPP_PATH@
DFLAGS = @DFLAGS@
GFXFLAGS = @GFXFLAGS@
GFXLIBS = @GFXLIBS@
I18N = @I18N@
I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@
LIBPL_INC_PATH = @LIBPL_INC_PATH@
LIBPL_LIBS = @LIBPL_LIBS@
LN_S = @LN_S@
MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@
NLSDIR = @NLSDIR@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
REDUCE_APPICONS = @REDUCE_APPICONS@
SHAPE = @SHAPE@
SOUND = @SOUND@
VERSION = @VERSION@
WPMOFILES = @WPMOFILES@
XCFLAGS = @XCFLAGS@
XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
XSHM = @XSHM@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LOCALE = @X_LOCALE@
pixmapdir = @pixmapdir@
wprefsdir = @wprefsdir@
AUTOMAKE_OPTIONS = no-dependencies
SUBDIRS = Resources
LIBLIST= -L$(top_builddir)/wrlib -lwraster @XLFLAGS@ @GFXLIBS@ @XLIBS@ \
-lm @LIBPL_LIBS@
lib_LIBRARIES = libWINGs.a
include_HEADERS = WINGs.h WUtil.h WINGsP.h
noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
testmywidget_LDADD = -L. -lWINGs $(LIBLIST)
fontl_SOURCES = fontl.c
fontl_LDADD = -L. -lWINGs $(LIBLIST)
wtest_SOURCES = wtest.c
wtest_LDADD = -L. -lWINGs $(LIBLIST)
wtest_DEPENDENCIES = libWINGs.a
wmfile_SOURCES = wmfile.c
wmfile_LDADD = -L. -lWINGs $(LIBLIST)
wmquery_SOURCES = wmquery.c
wmquery_LDADD = -L. -lWINGs $(LIBLIST)
EXTRA_DIST = logo.xpm
# wbutton.c
libWINGs_a_SOURCES = \
WINGs.h \
WINGsP.h \
configuration.c \
international.c \
notification.c \
selection.c \
userdefaults.c \
wapplication.c \
wbrowser.c \
wbutton.c \
wcolor.c \
wcolorwell.c \
wevent.c \
wfilepanel.c \
wframe.c \
wfont.c \
wfontpanel.c \
widgets.c \
wlabel.c \
wlist.c \
wmisc.c \
wpanel.c \
wpixmap.c \
wpopupbutton.c \
wscroller.c \
wscrollview.c \
wslider.c \
wsplitview.c \
wtextfield.c \
wwindow.c \
wview.c \
error.c \
findfile.c \
hashtable.c \
memory.c \
usleep.c
INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/src @XCFLAGS@ \
-DRESOURCE_PATH=\"$(datadir)/WINGs\" $(GFXFLAGS) -DDEBUG \
@LIBPL_INC_PATH@
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../src/config.h
CONFIG_CLEAN_FILES =
LIBRARIES = $(lib_LIBRARIES)
DEFS = @DEFS@ -I. -I$(srcdir) -I../src
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
X_CFLAGS = @X_CFLAGS@
X_LIBS = @X_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@
libWINGs_a_LIBADD =
libWINGs_a_OBJECTS = configuration.o international.o notification.o \
selection.o userdefaults.o wapplication.o wbrowser.o wbutton.o wcolor.o \
wcolorwell.o wevent.o wfilepanel.o wframe.o wfont.o wfontpanel.o \
widgets.o wlabel.o wlist.o wmisc.o wpanel.o wpixmap.o wpopupbutton.o \
wscroller.o wscrollview.o wslider.o wsplitview.o wtextfield.o wwindow.o \
wview.o error.o findfile.o hashtable.o memory.o usleep.o
AR = ar
PROGRAMS = $(noinst_PROGRAMS)
wtest_OBJECTS = wtest.o
wtest_LDFLAGS =
wmquery_OBJECTS = wmquery.o
wmquery_DEPENDENCIES =
wmquery_LDFLAGS =
wmfile_OBJECTS = wmfile.o
wmfile_DEPENDENCIES =
wmfile_LDFLAGS =
fontl_OBJECTS = fontl.o
fontl_DEPENDENCIES =
fontl_LDFLAGS =
testmywidget_OBJECTS = testmywidget.o mywidget.o
testmywidget_DEPENDENCIES =
testmywidget_LDFLAGS =
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
HEADERS = $(include_HEADERS)
DIST_COMMON = README ChangeLog Makefile.am Makefile.in TODO
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP = --best
SOURCES = $(libWINGs_a_SOURCES) $(wtest_SOURCES) $(wmquery_SOURCES) $(wmfile_SOURCES) $(fontl_SOURCES) $(testmywidget_SOURCES)
OBJECTS = $(libWINGs_a_OBJECTS) $(wtest_OBJECTS) $(wmquery_OBJECTS) $(wmfile_OBJECTS) $(fontl_OBJECTS) $(testmywidget_OBJECTS)
all: all-recursive all-am
.SUFFIXES:
.SUFFIXES: .S .c .o .s
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
mostlyclean-libLIBRARIES:
clean-libLIBRARIES:
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
distclean-libLIBRARIES:
maintainer-clean-libLIBRARIES:
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(libdir)
list='$(lib_LIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/$$p"; \
$(INSTALL_DATA) $$p $(DESTDIR)$(libdir)/$$p; \
else :; fi; \
done
@$(POST_INSTALL)
@list='$(lib_LIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
echo " $(RANLIB) $(DESTDIR)$(libdir)/$$p"; \
$(RANLIB) $(DESTDIR)$(libdir)/$$p; \
else :; fi; \
done
uninstall-libLIBRARIES:
@$(NORMAL_UNINSTALL)
list='$(lib_LIBRARIES)'; for p in $$list; do \
rm -f $(DESTDIR)$(libdir)/$$p; \
done
.c.o:
$(COMPILE) -c $<
.s.o:
$(COMPILE) -c $<
.S.o:
$(COMPILE) -c $<
mostlyclean-compile:
-rm -f *.o core *.core
clean-compile:
distclean-compile:
-rm -f *.tab.c
maintainer-clean-compile:
libWINGs.a: $(libWINGs_a_OBJECTS) $(libWINGs_a_DEPENDENCIES)
-rm -f libWINGs.a
$(AR) cru libWINGs.a $(libWINGs_a_OBJECTS) $(libWINGs_a_LIBADD)
$(RANLIB) libWINGs.a
mostlyclean-noinstPROGRAMS:
clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
distclean-noinstPROGRAMS:
maintainer-clean-noinstPROGRAMS:
wtest: $(wtest_OBJECTS) $(wtest_DEPENDENCIES)
@rm -f wtest
$(LINK) $(wtest_LDFLAGS) $(wtest_OBJECTS) $(wtest_LDADD) $(LIBS)
wmquery: $(wmquery_OBJECTS) $(wmquery_DEPENDENCIES)
@rm -f wmquery
$(LINK) $(wmquery_LDFLAGS) $(wmquery_OBJECTS) $(wmquery_LDADD) $(LIBS)
wmfile: $(wmfile_OBJECTS) $(wmfile_DEPENDENCIES)
@rm -f wmfile
$(LINK) $(wmfile_LDFLAGS) $(wmfile_OBJECTS) $(wmfile_LDADD) $(LIBS)
fontl: $(fontl_OBJECTS) $(fontl_DEPENDENCIES)
@rm -f fontl
$(LINK) $(fontl_LDFLAGS) $(fontl_OBJECTS) $(fontl_LDADD) $(LIBS)
testmywidget: $(testmywidget_OBJECTS) $(testmywidget_DEPENDENCIES)
@rm -f testmywidget
$(LINK) $(testmywidget_LDFLAGS) $(testmywidget_OBJECTS) $(testmywidget_LDADD) $(LIBS)
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(includedir)
@list='$(include_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p"; \
$(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p; \
done
uninstall-includeHEADERS:
@$(NORMAL_UNINSTALL)
list='$(include_HEADERS)'; for p in $$list; do \
rm -f $(DESTDIR)$(includedir)/$$p; \
done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
@SET_MAKE@
all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive info-recursive dvi-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
list='$(SUBDIRS)'; for subdir in $$list; do \
target=`echo $@ | sed s/-recursive//`; \
echo "Making $$target in $$subdir"; \
(cd $$subdir && $(MAKE) $$target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
rev="$$subdir $$rev"; \
done; \
for subdir in $$rev; do \
target=`echo $@ | sed s/-recursive//`; \
echo "Making $$target in $$subdir"; \
(cd $$subdir && $(MAKE) $$target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
(cd $$subdir && $(MAKE) tags); \
done
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
done; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = WINGs
distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done
for subdir in $(SUBDIRS); do \
test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \
|| exit 1; \
chmod 777 $(distdir)/$$subdir; \
(cd $$subdir && $(MAKE) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \
|| exit 1; \
done
info: info-recursive
dvi: dvi-recursive
check: all-am
$(MAKE) check-recursive
installcheck: installcheck-recursive
all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
install-exec-am: install-libLIBRARIES
install-data-am: install-includeHEADERS
uninstall-am: uninstall-libLIBRARIES uninstall-includeHEADERS
install-exec: install-exec-recursive install-exec-am
@$(NORMAL_INSTALL)
install-data: install-data-recursive install-data-am
@$(NORMAL_INSTALL)
install: install-recursive install-exec-am install-data-am
@:
uninstall: uninstall-recursive uninstall-am
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs: installdirs-recursive
$(mkinstalldirs) $(DATADIR)$(libdir) $(DATADIR)$(includedir)
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-rm -f Makefile $(DISTCLEANFILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean-am: mostlyclean-libLIBRARIES mostlyclean-compile \
mostlyclean-noinstPROGRAMS mostlyclean-tags \
mostlyclean-generic
clean-am: clean-libLIBRARIES clean-compile clean-noinstPROGRAMS \
clean-tags clean-generic mostlyclean-am
distclean-am: distclean-libLIBRARIES distclean-compile \
distclean-noinstPROGRAMS distclean-tags \
distclean-generic clean-am
maintainer-clean-am: maintainer-clean-libLIBRARIES \
maintainer-clean-compile \
maintainer-clean-noinstPROGRAMS maintainer-clean-tags \
maintainer-clean-generic distclean-am
mostlyclean: mostlyclean-recursive mostlyclean-am
clean: clean-recursive clean-am
distclean: distclean-recursive distclean-am
-rm -f config.status
maintainer-clean: maintainer-clean-recursive maintainer-clean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
.PHONY: mostlyclean-libLIBRARIES distclean-libLIBRARIES \
clean-libLIBRARIES maintainer-clean-libLIBRARIES uninstall-libLIBRARIES \
install-libLIBRARIES mostlyclean-compile distclean-compile \
clean-compile maintainer-clean-compile mostlyclean-noinstPROGRAMS \
distclean-noinstPROGRAMS clean-noinstPROGRAMS \
maintainer-clean-noinstPROGRAMS uninstall-includeHEADERS \
install-includeHEADERS install-data-recursive uninstall-data-recursive \
install-exec-recursive uninstall-exec-recursive installdirs-recursive \
uninstalldirs-recursive all-recursive check-recursive \
installcheck-recursive info-recursive dvi-recursive \
mostlyclean-recursive distclean-recursive clean-recursive \
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info dvi \
installcheck all-am install-exec-am install-data-am uninstall-am \
install-exec install-data install uninstall all installdirs \
mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

129
WINGs/NEWS Normal file
View File

@@ -0,0 +1,129 @@
*** Thu Oct 04 06:00:09 EEST 2001 -Dan
Property lists handling code
----------------------------
Code to handle property lists was added to WINGs. It is more robust
than the libPropList code, mostly because some conflicting concepts
borrowed from UserDefaults (which libPropList use) are no longer used in
the WINGs property lists code. These borrowed concepts conflicted with the
retain/release mechanism of property lists and could lead in certain cases
to segmentation faults when executing libPropList based code. But the worse
part was that these libPropList problems were practically unsolvable without
removing one of those conflicting concepts and without a complete redesign.
The new WINGs property lists code is also better integrated with the other
data types from WINGs and is actively maintained.
Practically the things that were removed from the WINGs property list
implementation compared to the old libPropList implementation, are exactly
the UserDefaults borrowed concepts that conflict with the retain/release
mechanism:
- The container of a proplist object and the associated functions are gone.
- The filename associated with a proplist object and the corresponding
functions are gone. Now the saving function needs the filename as a
parameter.
- The synchronization functions are no longer supported. They are part of
the UserDefaults and are implemented there.
- No functions related to domains/registering were implemented in the WINGs
property lists code, because they are also not part of property lists.
They are more in connection with UserDefaults and a central point of access
for domains.
The above 2 concepts: container and filename were added to libPropList just
to let it support synchronization which was borrowed from UserDefaults.
Property lists as defined in the openstep specification are just complex
data structures composed of strings, data, arrays, dictionaries and a mix of
them and are not associated with any file in particular. UserDefaults on the
other hand are property lists read from a specific file and they associate
that property list with that file and allow them to be synchronized.
Old libPropList based code can still be used by linking against the WINGs
library containing the new proplist code with minimal changes which are
described in detail in the comments at the top of the WINGs/proplist-compat.h
header file (the same file carries the #defines for mapping old libPropList
functions to the new WINGs proplist functions).
Our recommendation is to move to the new functions WINGs provide because
they better integrate with other function naming conventions in WINGs.
The proplist-compat.h header file is just a way to have old code up and
running with minimal changes so that we can remove the old and unmaintained
libPropList from systems while keeping to use old libPropList based code
without rewriting it and it should not be used for other purposes.
*** Sat Apr 21 09:12:09 EEST 2001 -Dan
API change
----------
To allow a correct display of icon images with alpha blending in panels and
other places where a WINGs based application may use them the following
changes took place:
1. The following functions were renamed:
- WMSetApplicationIconImage() --> WMSetApplicationIconPixmap()
- WMGetApplicationIconImage() --> WMGetApplicationIconPixmap()
- WMSetWindowMiniwindowImage() --> WMSetWindowMiniwindowPixmap()
2. The following functions were added:
- WMSetApplicationIconImage(WMScreen *scr, RImage *image)
- RImage* WMGetApplicationIconImage(WMScreen *scr)
- WMPixmap* WMCreateApplicationIconBlendedPixmap(WMScreen *scr, RColor *col)
As you can see the old functions that operated on WMPixmap images (which are
basically X Pixmaps that lack alpha information) were renamed to ...Pixmap()
to make them more suggestive about what they do and to make room for the
new functions that operate on RImages (that hold alpha information).
Since the corresponding WMGet... functions only retrieve the stored
image/pixmap from the application, I'll outline how the WMSet...
functions operate:
All WM...IconPixmap() functions operate on WMPixmaps
All WM...IconImage() functions operate on RImages
- WMSetApplicationIconImage() will set the RImage to be used in panels
and will also convert the RImage to a WMPixmap with a threshold of 128
and will use that pixmap for the appicon image. If that doesn't satisfy
you, you can make a call to WMSetApplicationIconPixmap() on your own to
set whatever WMPixmap you see fit for the appicon.
- WMSetApplicationIconPixmap() will set the WMPixmap to be used for the
appicon and for the panels
If you use only one of the above functions, the corresponding image/pixmap
will be used everywhere where needed (panels and appicon), but the pixmap
version will not be able to handle alpha blending correctly.
If you use both WMSetApplicationIconImage() and WMSetApplicationIconPixmap()
then the RImage will have priority in panels, and the WMPixmap will only be
used for the appicon. This allows you to better control what icon is
displayed in the appicon, in case the default conversion of the RImage to a
pixmap with a threshold of 128 is not good enough, or in case you want a
different icon to be shown in the appicon than in panels.
Also this new function was added:
- WMCreateApplicationIconBlendedPixmap() will use the RImage set with
WMSetApplicationIconImage() if available and will blend it with the color
you passed. This will make the image show well on a background of that
color. If the RImage was not set it will return NULL. You need to call
WMReleasePixmap() on it after you finish with it. Passing a NULL pointer
instead of a color will make the RImage be blended with the default color
of the WINGs widgets: '#aeaaae' making it suitable to be assigned to any
WINGs widget.
To make your existing code work as before all you need to do is to rename
the following functions:
- WMSetApplicationIconImage() --> WMSetApplicationIconPixmap()
- WMGetApplicationIconImage() --> WMGetApplicationIconPixmap()
- WMSetWindowMiniwindowImage() --> WMSetWindowMiniwindowPixmap()
But if you want to take advantage of the new abilities to show alpha
blended images you need to start using the new functions.

View File

@@ -1,11 +1,11 @@
WINGs - WINGs Is Not GNUstep
WINGs - WINGs Is Not GNUstep
by
by
Alfredo Kengi Kojima
kojima@windowmaker.org
Alfredo Kengi Kojima
kojima@windowmaker.org
WINGs is a small widget set with the N*XTSTEP look and feel. It's API
@@ -25,9 +25,9 @@ and faster than say, Motif or even Athena. Knowing Xlib will help you to
workaround some of it's limitations, although you'll probably be able to
write something like a trivial tic-tac-toe game without knowing much Xlib.
Some of it's functions are designed to support the WindowMaker window
Some of it's functions are designed to support the Window Maker window
manager (see http://windowmaker.org) In fact, it's primary role is to
support WindowMaker. All other uses of it are just an added bonus.
support Window Maker. All other uses of it are just an added bonus.
It will help you to understand the API if you read the ApplicationKit
reference manual, distributed as a PDF by Apple. The function names,
@@ -37,9 +37,8 @@ structs and most of the intrinsics are very close to OpenStep classes.
Internationalization:
---------------------
WINGs supports display of multibyte characters (kanji etc) without the
to specify any flags (ie: there is no way to disable i18n support).
Change ~/GNUstep/Defaults/WMGLOBAL to set the desired font set.
Change ~/GNUstep/Defaults/WMGLOBAL to set the desired font set and
set MultiByteText = YES; to enable support for multibyte text.
Widgets provided by WINGs:
@@ -57,24 +56,22 @@ Widgets provided by WINGs:
- slider
- scrollable view
- color well
- split view (only 2 subviews)
- split view
- tabbed view
- progress indicator
- selection (make pasteboard like?)
- drag&drop
- input box
- file panel
- color panel
- alert panel
Planned:
--------
- selection (pasteboard like)
- drag&drop
- font panel
If you think you can code the following, please do. They are needed by
WPrefs.app, but the number of other things I have to do is huge.
- color panel
- font panel (the UI part is done. Might require a rewrite of the font list
retrievel code. Might also require a WMFontManager)
- input method support (XIM). I have no idea of how to code it. People who use
different characters than ASCII will have trouble editing menus without it...
@@ -84,9 +81,7 @@ Wish list: (I don't have the know-how or time to do them)
- text (with support for RTF)
- matrix (like NSMatrix)
- splitviews with more than 2 subviews
- font manager (like NSFontManager)
- finish file panel, open/save
- finish other wigets
- optimize list scrolling (XCopyArea() the area that's already drawn)
- InterfaceMaker?

View File

@@ -0,0 +1,3 @@
Makefile Makefile.in
.psrc .inslog2 tca.map tca.log
*.rpt

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,210 +0,0 @@
# Makefile.in generated automatically by automake 1.3 from Makefile.am
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = /bin/sh
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DISTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
CC = @CC@
CPP_PATH = @CPP_PATH@
DFLAGS = @DFLAGS@
GFXFLAGS = @GFXFLAGS@
GFXLIBS = @GFXLIBS@
I18N = @I18N@
I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@
LIBPL_INC_PATH = @LIBPL_INC_PATH@
LIBPL_LIBS = @LIBPL_LIBS@
LN_S = @LN_S@
MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@
NLSDIR = @NLSDIR@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
REDUCE_APPICONS = @REDUCE_APPICONS@
SHAPE = @SHAPE@
SOUND = @SOUND@
VERSION = @VERSION@
WPMOFILES = @WPMOFILES@
XCFLAGS = @XCFLAGS@
XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
XSHM = @XSHM@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LOCALE = @X_LOCALE@
pixmapdir = @pixmapdir@
wprefsdir = @wprefsdir@
resdatadir = $(datadir)/WINGs
resdata_DATA = Images.tiff Images.xpm defaultIcon.tiff defaultIcon.xpm
EXTRA_DIST = $(resdata_DATA) Images.xcf
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../../src/config.h
CONFIG_CLEAN_FILES =
DATA = $(resdata_DATA)
DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP = --best
all: Makefile $(DATA)
.SUFFIXES:
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps WINGs/Resources/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
install-resdataDATA: $(resdata_DATA)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(resdatadir)
@list='$(resdata_DATA)'; for p in $$list; do \
if test -f $(srcdir)/$$p; then \
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(resdatadir)/$$p"; \
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(resdatadir)/$$p; \
else if test -f $$p; then \
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(resdatadir)/$$p"; \
$(INSTALL_DATA) $$p $(DESTDIR)$(resdatadir)/$$p; \
fi; fi; \
done
uninstall-resdataDATA:
@$(NORMAL_UNINSTALL)
list='$(resdata_DATA)'; for p in $$list; do \
rm -f $(DESTDIR)$(resdatadir)/$$p; \
done
tags: TAGS
TAGS:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = WINGs/Resources
distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done
info:
dvi:
check: all
$(MAKE)
installcheck:
install-exec:
@$(NORMAL_INSTALL)
install-data: install-resdataDATA
@$(NORMAL_INSTALL)
install: install-exec install-data all
@:
uninstall: uninstall-resdataDATA
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
$(mkinstalldirs) $(DATADIR)$(resdatadir)
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-rm -f Makefile $(DISTCLEANFILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-generic
clean: clean-generic mostlyclean
distclean: distclean-generic clean
-rm -f config.status
maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
.PHONY: uninstall-resdataDATA install-resdataDATA tags distdir info dvi \
installcheck install-exec install-data install uninstall all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@@ -1,4 +1,13 @@
- move paint to idle handlers
- check if its useful to add some WMBrowserSelectionDidChangeNotification
(actually a pass-through for WMListSelectionDidChangeNotification).
Or a delegate to be called when the list selection change.
- add some way to modify speed when scrolling WMList, depending on how
far the mouse is moved outside of the list.
- clean up header files of declared but not implemented anywhere functions
- implement a generic WMChangeFontAttribute(WMFont *font, enum attributes)
function
- optimize color allocation for repeated colors
- make it work in 8bpp

5
WINGs/Tests/.cvsignore Normal file
View File

@@ -0,0 +1,5 @@
Makefile Makefile.in
testtext testcolorpanel testmywidget wmfile wmquery wtest
.libs
.psrc .inslog2 tca.map tca.log
*.rpt

21
WINGs/Tests/Makefile.am Normal file
View File

@@ -0,0 +1,21 @@
## automake input file for WINGs - Tests
AUTOMAKE_OPTIONS = no-dependencies
noinst_PROGRAMS = wtest wmquery wmfile testmywidget
LDADD= $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la \
@INTLIBS@
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
wtest_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
EXTRA_DIST = logo.xpm upbtn.xpm wm.html wm.png
INCLUDES = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ -DDEBUG

View File

@@ -1,8 +1,10 @@
/*
* Demo user widget for WINGs.
* Demo user widget for WINGs
*
*
* Copyright (c) 1998 Alfredo K. Kojima
* Author: Alfredo K. Kojima
*
* This file is in the public domain.
*
*/
@@ -12,7 +14,7 @@
*
*
*/
#include "WINGsP.h"
#include <WINGs/WINGsP.h>
/*
* Our public header.
@@ -48,12 +50,13 @@ static void handleActionEvents(XEvent *event, void *data);
/*
* Some procedures you might want to override. Don't forget to call
* the equivalent view procedure after (or before) doing your stuff.
* Delegates
* See the source for the other widgets to see how to use.
* You won't need to use this most of the time.
*/
static W_ViewProcedureTable _MyWidgetViewProcedures = {
static W_ViewDelegate _MyWidgetDelegate = {
NULL,
NULL,
NULL,
NULL,
NULL
@@ -73,7 +76,7 @@ InitMyWidget(WMScreen *scr)
{
/* register our widget with WINGs and get our widget class ID */
if (!myWidgetClass) {
myWidgetClass = W_RegisterUserWidget(&_MyWidgetViewProcedures);
myWidgetClass = W_RegisterUserWidget();
}
return myWidgetClass;
@@ -95,7 +98,7 @@ CreateMyWidget(WMWidget *parent)
/* set the class ID */
mPtr->widgetClass = myWidgetClass;
/*
* Create the view for our widget.
* Note: the Window for the view is only created after the view is
@@ -105,12 +108,15 @@ CreateMyWidget(WMWidget *parent)
*/
mPtr->view = W_CreateView(W_VIEW(parent));
if (!mPtr->view) {
free(mPtr);
wfree(mPtr);
return NULL;
}
/* always do this */
mPtr->view->self = mPtr;
/* setup the delegates for the view */
mPtr->view->delegate = &_MyWidgetDelegate;
/*
* Intercept some events for our widget, so that we can handle them.
*/
@@ -144,7 +150,7 @@ paintMyWidget(_MyWidget *mPtr)
color = WMWhiteColor(scr);
W_PaintText(mPtr->view, mPtr->view->window, scr->normalFont, 0, 0,
mPtr->view->size.width, WACenter, W_GC(color),
mPtr->view->size.width, WACenter, WMColorGC(color),
False, mPtr->text, strlen(mPtr->text));
WMReleaseColor(color);
@@ -194,7 +200,7 @@ SetMyWidgetText(MyWidget *mPtr, char *text)
CHECK_CLASS(mPtr, myWidgetClass);
if (mPtr->text)
free(mPtr->text);
wfree(mPtr->text);
mPtr->text = wstrdup(text);
@@ -213,9 +219,9 @@ destroyMyWidget(_MyWidget *mPtr)
*/
if (mPtr->text)
free(mPtr->text);
wfree(mPtr->text);
free(mPtr);
wfree(mPtr);
}

View File

@@ -1,6 +1,6 @@
/*
* Header foy demo widget.
* Header for demo widget.
*
*/

View File

@@ -1,7 +1,6 @@
#include <WINGs.h>
#include <WUtil.h>
#include <WINGs/WINGs.h>
#include "mywidget.h"

57
WINGs/Tests/upbtn.xpm Normal file
View File

@@ -0,0 +1,57 @@
/* XPM */
static char * upbtn_xpm[] = {
"20 22 32 1",
" c None",
". c #000000",
"+ c #FFFFFF",
"@ c #4A485A",
"# c #524052",
"$ c #4A595A",
"% c #5A596A",
"& c #4A486A",
"* c #5A595A",
"= c #52556A",
"- c #52406A",
"; c #6A556A",
"> c #5A6D6A",
", c #5A597B",
"' c #5A6D7B",
") c #6A557B",
"! c #6A6D7B",
"~ c #6A697B",
"{ c #6A698B",
"] c #7B797B",
"^ c #C5C2C5",
"/ c #6A818B",
"( c #6A7D7B",
"_ c #7B698B",
": c #6A798B",
"< c #7B799C",
"[ c #7B798B",
"} c #7B8D94",
"| c #7B81A4",
"1 c #8B85A4",
"2 c #73899C",
"3 c #7B89A4",
" ",
" .+ ",
" .@#+ ",
" .$%$&+ ",
" .*=*-*-+ ",
" .%%%%%%$%+ ",
" .%=%;%=*=*-+ ",
" .>%>,''>,>%=%+ ",
" .%)>)!~>)>)>=*#+ ",
" .>~'~'{'{'~',>%$@+ ",
" ]+++^{!{!~!)>+++++ ",
" ./{/{({'~+ ",
" ._:_:_!~>+ ",
" ./</</{'~+ ",
" .<<<[_({!+ ",
" .}|}</{(~+ ",
" .12<[_:{'+ ",
" .31}</{'~+ ",
" .12<[_!~>+ ",
" .2</</{''+ ",
" ]+++++++++ ",
" "};

37
WINGs/Tests/wm.html Normal file
View File

@@ -0,0 +1,37 @@
<HTML><font size=-1>
<center>
<Img src=wm.png></b><p>
<b>GNU Window Maker</B><br>
<i>X11 Window Manager</i><p>
<u>http://windowmaker.org<br>
ftp.windowmaker.org</u></font><Br>
</center>
<b><i>Window Maker</b>
<Img src=upbtn.xpm></i>is the GNU window manager
for the X Window System. It was
designed to emulate the look and feel of part of the NEXTSTEP(tm) GUI. Its
supposed to be relatively fast and small, feature rich, easy to configure and
easy to use, with a simple and elegant appearance borrowed from NEXTSTEP(tm).
<p>
<b>Window Maker</b> was designed keeping integration with GNUstep in
mind and is the
"official" window manager for it. It is also part of the GNU project
(<u>www.gnu.org</u>)
<p>
<b>What is <i>GNUstep?</i></b><p>
<i><b>G</i>NU</b>step is a complete object-oriented development system, based on the
OpenStep specification released by NeXT(tm) (now Apple(tm)) and Sun(tm). It will provide everything one needs to produce cross-platform, object-oriented, graphical (and non-graphical) applications; providing among other things, base system libraries, a high-level GUI application framework that uses a Display PostScript(tm)-like imaging model (DGS), objects for accessing relational databases, distributed objects and a graphical development environment, with tools like interface modeller, a project management system
(project center) and other tools.
<p>
The GNUstep development system will be used to create a user environment,
with everything needed for a complete graphical user interface, such as a
file viewer, text editors and other applications. Note that the user
environment (or "desktop environment") is only a small part of the whole
GNUstep project and therefore it does not "compete" with other projects like
KDE or GNOME, simply because they are completely different things.
<p>
For more information on the GNUstep project, visit:
<u>http://www.gnustep.org</u> and <u>http://gnustep.current.nu</u>
</HTML>

BIN
WINGs/Tests/wm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

123
WINGs/Tests/wmfile.c Normal file
View File

@@ -0,0 +1,123 @@
/*
* Author: Len Trigg <trigg@cs.waikato.ac.nz>
*/
/*
Update: Franck Wolff <frawolff@club-internet.fr>
-----------------------------------------------------------------------
List of updated functions :
- main :
add -s option for a save panel...
-----------------------------------------------------------------------
*/
#include <WINGs/WINGs.h>
#include <unistd.h>
#include <stdio.h>
#include "logo.xpm"
void
wAbort()
{
exit(1);
}
char *ProgName;
void usage(void)
{
fprintf(stderr,
"usage:\n"
"\t%s [-options]\n"
"\n"
"options:\n"
" -s\t\tSave panel (default open panel)\n"
" -i <str>\tInitial directory (default /)\n"
" -t <str>\tQuery window title (default none)\n"
"\n"
"information:\n"
"\t%s pops up a WindowMaker style file selection panel.\n"
"\n"
"version:\n"
"\t%s\n"
,ProgName,ProgName,__DATE__
);
exit(0);
}
#define OPEN_PANEL_TYPE 0
#define SAVE_PANEL_TYPE 1
int main(int argc, char **argv)
{
Display *dpy = XOpenDisplay("");
WMScreen *scr;
WMPixmap *pixmap;
WMOpenPanel *oPanel;
WMSavePanel *sPanel;
/* RImage *image;*/
char *title = NULL;
char *initial = "/";
int ch;
int panelType = OPEN_PANEL_TYPE;
extern char *optarg;
extern int optind;
WMInitializeApplication("WMFile", &argc, argv);
ProgName = argv[0];
if (!dpy) {
puts("could not open display");
exit(1);
}
while((ch = getopt(argc, argv, "si:ht:")) != -1)
switch(ch)
{
case 's':
panelType = SAVE_PANEL_TYPE;
break;
case 'i':
initial = optarg;
break;
case 't':
title = optarg;
break;
default:
usage();
}
for(; optind <argc; optind++)
usage();
scr = WMCreateSimpleApplicationScreen(dpy);
pixmap = WMCreatePixmapFromXPMData(scr, GNUSTEP_XPM);
WMSetApplicationIconPixmap(scr, pixmap);
WMReleasePixmap(pixmap);
if (panelType == SAVE_PANEL_TYPE) {
sPanel = WMGetSavePanel(scr);
if (WMRunModalFilePanelForDirectory(sPanel, NULL, initial,
/*title*/ NULL, NULL) == True)
printf("%s\n", WMGetFilePanelFileName(sPanel));
else
printf("\n");
} else {
oPanel = WMGetOpenPanel(scr);
if (WMRunModalFilePanelForDirectory(oPanel, NULL, initial,
/*title*/ NULL, NULL) == True)
printf("%s\n", WMGetFilePanelFileName(oPanel));
else
printf("\n");
}
return 0;
}

View File

@@ -4,7 +4,7 @@
*/
#include "WINGs.h"
#include <WINGs/WINGs.h>
#include <unistd.h>
#include <stdio.h>
@@ -88,8 +88,8 @@ int main(int argc, char **argv)
scr = WMCreateSimpleApplicationScreen(dpy);
pixmap = WMCreatePixmapFromXPMData(scr, GNUSTEP_XPM);
WMSetApplicationIconImage(scr, pixmap); WMReleasePixmap(pixmap);
WMSetApplicationIconPixmap(scr, pixmap); WMReleasePixmap(pixmap);
if ((result = WMRunInputPanel(scr, NULL, title, prompt, initial, "OK", "Cancel")) != NULL)
printf("%s\n", result);

1329
WINGs/Tests/wtest.c Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1
WINGs/WINGs/.cvsignore Normal file
View File

@@ -0,0 +1 @@
Makefile Makefile.in

9
WINGs/WINGs/Makefile.am Normal file
View File

@@ -0,0 +1,9 @@
## automake input file for WINGs - Headers subdir
AUTOMAKE_OPTIONS = no-dependencies
# is this a kluge? if so, how should i do it?
includedir = @includedir@/WINGs
include_HEADERS = WINGs.h WUtil.h WINGsP.h proplist-compat.h

1818
WINGs/WINGs/WINGs.h Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,14 @@
#ifndef _WINGSP_H_
#define _WINGSP_H_
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "WINGs.h"
#include "WUtil.h"
#include <WINGs/WINGs.h>
#if WINGS_H_VERSION < 980922
#if WINGS_H_VERSION < 20020104
#error There_is_an_old_WINGs.h_file_somewhere_in_your_system._Please_remove_it.
#endif
@@ -16,9 +18,13 @@
#include <string.h>
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define DOUBLE_BUFFER
#define WC_UserWidget 128
@@ -26,20 +32,17 @@
#define SCROLLER_WIDTH 20
/* internal messages */
#define WM_UPDATE_COLORWELL 130
#define XDND_VERSION 4
#define WM_USER_MESSAGE 1024
#define SETUP_INTERNAL_MESSAGE(event, scrPtr) \
event.xclient.type=ClientMessage;\
event.xclient.display=scrPtr->display;\
event.xclient.send_event=False;\
event.xclient.serial=0;\
event.xclient.format=32;\
event.xclient.message_type=scrPtr->internalMessage;
typedef struct W_Application {
char *applicationName;
int argc;
char **argv;
char *resourcePath;
} W_Application;
typedef struct W_Font {
@@ -52,6 +55,7 @@ typedef struct W_Font {
short height;
short y;
short refCount;
char *name;
unsigned int notFontSet:1;
} W_Font;
@@ -85,6 +89,32 @@ typedef struct W_FocusInfo {
struct W_FocusInfo *next;
} W_FocusInfo;
struct W_DraggingInfo {
Window destinationWindow;
Window sourceWindow;
WMPoint location;
unsigned sourceOperation;
WMPixmap *image;
WMPoint imageLocation;
char **types;
Time timestamp;
int protocolVersion;
/* should be treated as internal data */
WMView *sourceView;
WMView *destView;
WMSize mouseOffset;
unsigned finished:1;
};
typedef struct W_Screen {
Display *display;
int screen;
@@ -102,11 +132,15 @@ typedef struct W_Screen {
RContext *rcontext;
struct W_IMContext *imctx;
/* application related */
W_FocusInfo *focusInfo;
struct W_Pixmap *applicationIcon;
RImage *applicationIconImage; /* image (can have alpha channel) */
struct W_Pixmap *applicationIconPixmap; /* pixmap - no alpha channel */
Window applicationIconWindow;
struct W_Window *windowList; /* list of windows in the app */
@@ -126,6 +160,11 @@ typedef struct W_Screen {
struct W_FontPanel *sharedFontPanel;
struct W_ColorPanel *sharedColorPanel;
Pixmap stipple;
struct W_View *dragSourceView;
struct W_DraggingInfo dragInfo;
/* colors */
W_Color *white;
@@ -145,10 +184,21 @@ typedef struct W_Screen {
GC ixorGC; /* IncludeInferiors XOR */
GC textFieldGC;
W_Font *normalFont;
W_Font *boldFont;
WMHashTable *fontCache;
WMHashTable *fontSetCache;
Bool useMultiByte;
unsigned int ignoredModifierMask; /* modifiers to ignore when typing txt */
struct W_Balloon *balloon;
struct W_Pixmap *checkButtonImageOn;
struct W_Pixmap *checkButtonImageOff;
@@ -173,51 +223,118 @@ typedef struct W_Screen {
struct W_Pixmap *pullDownIndicator;
struct W_Pixmap *popUpIndicator;
struct W_Pixmap *checkMark;
struct W_Pixmap *homeIcon;
struct W_Pixmap *altHomeIcon;
struct W_Pixmap *trashcanIcon;
struct W_Pixmap *altTrashcanIcon;
struct W_Pixmap *createDirIcon;
struct W_Pixmap *altCreateDirIcon;
struct W_Pixmap *disketteIcon;
struct W_Pixmap *altDisketteIcon;
struct W_Pixmap *unmountIcon;
struct W_Pixmap *altUnmountIcon;
struct W_Pixmap *magnifyIcon;
/* struct W_Pixmap *altMagnifyIcon;*/
struct W_Pixmap *wheelIcon;
struct W_Pixmap *grayIcon;
struct W_Pixmap *rgbIcon;
struct W_Pixmap *cmykIcon;
struct W_Pixmap *hsbIcon;
struct W_Pixmap *customPaletteIcon;
struct W_Pixmap *colorListIcon;
struct W_Pixmap *defaultObjectIcon;
Cursor defaultCursor;
Cursor textCursor;
Atom internalMessage; /* for ClientMessage */
Cursor invisibleCursor;
Atom attribsAtom; /* GNUstepWindowAttributes */
Atom deleteWindowAtom; /* WM_DELETE_WINDOW */
Atom protocolsAtom; /* _XA_WM_PROTOCOLS */
Atom clipboardAtom; /* CLIPBOARD */
Atom xdndAwareAtom; /* XdndAware */
Atom xdndSelectionAtom;
Atom xdndEnterAtom;
Atom xdndLeaveAtom;
Atom xdndPositionAtom;
Atom xdndDropAtom;
Atom xdndFinishedAtom;
Atom xdndTypeListAtom;
Atom xdndStatusAtom;
Atom xdndActionCopy;
Atom xdndActionMove;
Atom xdndActionLink;
Atom xdndActionAsk;
Atom xdndActionPrivate;
Atom wmIconDragOffsetAtom;
Atom wmStateAtom; /* WM_STATE */
/* stuff for detecting double-clicks */
Time lastClickTime; /* time of last mousedown event */
Window lastClickWindow; /* window of the last mousedown */
struct W_View *modalView;
unsigned modal:1;
unsigned modalLoop:1;
unsigned ignoreNextDoubleClick:1;
} W_Screen;
typedef struct W_ViewDelegate {
void *data;
void (*didMove)(struct W_ViewDelegate*, WMView*);
void (*didResize)(struct W_ViewDelegate*, WMView*);
void (*willMove)(struct W_ViewDelegate*, WMView*, int*, int*);
void (*willResize)(struct W_ViewDelegate*, WMView*,
unsigned int*, unsigned int*);
} W_ViewDelegate;
typedef struct W_View {
struct W_Screen *screen;
WMWidget *self; /* must point to the widget the
* view belongs to */
W_ViewDelegate *delegate;
Window window;
WMSize size;
short topOffs;
short leftOffs;
short bottomOffs;
short rightOffs;
WMPoint pos;
struct W_View *nextFocusChain; /* next/prev in focus chain */
struct W_View *prevFocusChain;
struct W_View *nextResponder; /* next to receive keyboard events */
struct W_View *parent; /* parent WMView */
@@ -225,18 +342,23 @@ typedef struct W_View {
struct W_View *nextSister; /* next on parent's children list */
struct W_EventHandler *handlerList;/* list of event handlers for this window */
WMArray *eventHandlers; /* event handlers for this window */
unsigned long attribFlags;
XSetWindowAttributes attribs;
void *hangedData; /* data holder for user program */
#if 0
WMColor *backColor;
Cursor cursor;
Atom *droppableTypes;
struct W_DragSourceProcs *dragSourceProcs;
struct W_DragDestinationProcs *dragDestinationProcs;
#endif
int helpContext;
struct {
unsigned int realized:1;
unsigned int mapped:1;
@@ -258,6 +380,7 @@ typedef struct W_View {
unsigned int pendingRelease3:1;
unsigned int pendingRelease4:1;
unsigned int pendingRelease5:1;
unsigned int xdndHintSet:1;
} flags;
int refCount;
@@ -266,31 +389,27 @@ typedef struct W_View {
typedef struct W_EventHandler {
unsigned long eventMask;
WMEventProc *proc;
void *clientData;
struct W_EventHandler *nextHandler;
} W_EventHandler;
typedef struct W_ViewProcedureTable {
void (*setBackgroundColor)(WMWidget*, WMColor *color);
void (*resize)(WMWidget*, unsigned int, unsigned int);
void (*move)(WMWidget*, int, int);
} W_ViewProcedureTable;
typedef struct _WINGsConfiguration {
char *systemFont;
char *boldSystemFont;
int defaultFontSize;
Bool useMultiByte;
char *floppyPath;
unsigned doubleClickDelay;
unsigned mouseWheelUp;
unsigned mouseWheelDown;
} _WINGsConfiguration;
_WINGsConfiguration WINGsConfiguration;
extern _WINGsConfiguration WINGsConfiguration;
@@ -302,13 +421,21 @@ _WINGsConfiguration WINGsConfiguration;
#define W_VIEW_REALIZED(view) (view)->flags.realized
#define W_VIEW_MAPPED(view) (view)->flags.mapped
#define W_VIEW_DISPLAY(view) (view)->screen->display
#define W_VIEW_SCREEN(view) (view)->screen
#define W_VIEW_DRAWABLE(view) (view)->window
#define W_VIEW_WIDTH(view) (view)->size.width
#define W_VIEW_HEIGHT(view) (view)->size.height
#define W_PIXEL(c) (c)->color.pixel
#define W_GC(c) (c)->gc
#define W_FONTID(f) (f)->font->fid
#define W_DRAWABLE(scr) (scr)->rootWin
#define W_DRAWABLE(scr) (scr)->rcontext->drawable
W_View *W_GetViewForXWindow(Display *display, Window window);
@@ -317,6 +444,8 @@ W_View *W_CreateView(W_View *parent);
W_View *W_CreateTopView(W_Screen *screen);
W_View *W_CreateUnmanagedTopView(W_Screen *screen);
W_View *W_CreateRootView(W_Screen *screen);
@@ -324,7 +453,12 @@ void W_DestroyView(W_View *view);
void W_RealizeView(W_View *view);
void W_ReparentView(W_View *view, W_View *newParent);
void W_ReparentView(W_View *view, W_View *newParent, int x, int y);
void W_RaiseView(W_View *view);
void W_LowerView(W_View *view);
void W_MapView(W_View *view);
@@ -342,11 +476,15 @@ void W_ResizeView(W_View *view, unsigned int width, unsigned int height);
void W_SetViewBackgroundColor(W_View *view, WMColor *color);
void W_SetViewCursor(W_View *view, Cursor cursor);
void W_DrawRelief(W_Screen *scr, Drawable d, int x, int y, unsigned int width,
unsigned int height, WMReliefType relief);
void W_CleanUpEvents(W_View *view);
void W_DrawReliefWithGC(W_Screen *scr, Drawable d, int x, int y,
unsigned int width, unsigned int height,
WMReliefType relief,
GC black, GC dark, GC light, GC white);
void W_CallDestroyHandlers(W_View *view);
@@ -369,14 +507,12 @@ void W_BroadcastMessage(W_View *targetParent, XEvent *event);
void W_DispatchMessage(W_View *target, XEvent *event);
Bool W_CheckInternalMessage(W_Screen *scr, XClientMessageEvent *cev, int event);
void W_SetFocusOfToplevel(W_View *toplevel, W_View *view);
W_View *W_FocusedViewOfToplevel(W_View *view);
void W_SetFocusOfTopLevel(W_View *toplevel, W_View *view);
void W_ReleaseView(WMView *view);
WMView *W_RetainView(WMView *view);
@@ -385,10 +521,34 @@ void W_InitApplication(WMScreen *scr);
void W_InitNotificationCenter(void);
W_Class W_RegisterUserWidget(W_ViewProcedureTable *procTable);
W_Class W_RegisterUserWidget(void);
void W_RedisplayView(WMView *view);
Bool W_ApplicationInitialized(void);
char *W_GetTextSelection(WMScreen *scr, Atom selection);
void W_HandleSelectionEvent(XEvent *event);
void W_HandleDNDClientMessage(WMView *toplevel, XClientMessageEvent *event);
void W_FlushASAPNotificationQueue(void);
void W_FlushIdleNotificationQueue(void);
struct W_Balloon *W_CreateBalloon(WMScreen *scr);
void W_BalloonHandleEnterView(WMView *view);
void W_BalloonHandleLeaveView(WMView *view);
Bool W_CheckIdleHandlers(void);
void W_CheckTimerHandlers(void);
Bool W_HandleInputEvents(Bool waitForInput, int inputfd);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _WINGSP_H_ */

1028
WINGs/WINGs/WUtil.h Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,138 @@
/*
* This header file is provided for old libPropList compatibility.
* DO _NOT_ USE this except for letting your old libPropList-based code to
* work with the new property list code from WINGs, with minimal changes.
*
* All code written with old libPropList functions should work, given
* that the following changes are made:
*
* 1. Replace all
* #include <proplist.h>
* with
* #include <WINGs/proplist-compat.h>
* in your code.
*
* 2. Change all calls to PLSave() to have the extra filename parameter like:
* PLSave(proplist_t proplist, char* filename, Bool atomically)
*
* 3. The PLSetStringCmpHook() function is no longer available. There is a
* similar but simpler function provided which is enough for practical
* purposes:
* PLSetCaseSensitive(Bool caseSensitive)
*
* 4. The following functions do no longer exist. They were removed because
* they were based on concepts borrowed from UserDefaults which conflict
* with the retain/release mechanism:
* PLSynchronize(), PLDeepSynchronize(), PLShallowSynchronize()
* PLSetFilename(), PLGetFilename()
* PLGetContainer()
* You should change your code to not use them anymore.
*
* 5. The following functions are no longer available. They were removed
* because they also used borrowed concepts which have no place in a
* property list as defined in the OpenStep specifications. Also these
* functions were hardly ever used in programs to our knowledge.
* PLGetDomainNames(), PLGetDomain(), PLSetDomain(), PLDeleteDomain()
* PLRegister(), PLUnregister()
* You should also change your code to not use them anymore (in case you
* ever used them anyway ;-) ).
*
* 6. Link your program with libWINGs or libWUtil instead of libPropList.
* (libWINGs should be used for GUI apps, while libWUtil for non-GUI apps)
*
*
* Our recommandation is to rewrite your code to use the new functions and
* link against libWINGs/libWUtil. We do not recommend you to keep using old
* libPropList function names. This file is provided just to allow existing
* libropList based applications to run with minimal changes with the new
* proplist code from WINGs before their authors get the time to rewrite
* them. New proplist code from WINGs provide a better integration with the
* other data types from WINGs, not to mention that the proplist code in WINGs
* is actively maintained while the old libPropList is dead.
*
*/
#ifndef _PROPLIST_COMPAT_H_
#define _PROPLIST_COMPAT_H_
#include <WINGs/WUtil.h>
typedef WMPropList* proplist_t;
#ifndef YES
#define YES True
#endif
#ifndef NO
#define NO False
#endif
#define PLSetCaseSensitive(c) WMPLSetCaseSensitive(c)
#define PLMakeString(bytes) WMCreatePLString(bytes)
#define PLMakeData(bytes, length) WMCreatePLDataWithBytes(bytes, length)
#define PLMakeArrayFromElements WMCreatePLArray
#define PLMakeDictionaryFromEntries WMCreatePLDictionary
#define PLRetain(pl) WMRetainPropList(pl)
#define PLRelease(pl) WMReleasePropList(pl)
#define PLInsertArrayElement(array, pl, pos) WMInsertInPLArray(array, pos, pl)
#define PLAppendArrayElement(array, pl) WMAddToPLArray(array, pl)
#define PLRemoveArrayElement(array, pos) WMDeleteFromPLArray(array, pos)
#define PLInsertDictionaryEntry(dict, key, value) WMPutInPLDictionary(dict, key, value)
#define PLRemoveDictionaryEntry(dict, key) WMRemoveFromPLDictionary(dict, key)
#define PLMergeDictionaries(dest, source) WMMergePLDictionaries(dest, source, False)
#define PLGetNumberOfElements(pl) WMGetPropListItemCount(pl)
#define PLIsString(pl) WMIsPLString(pl)
#define PLIsData(pl) WMIsPLData(pl)
#define PLIsArray(pl) WMIsPLArray(pl)
#define PLIsDictionary(pl) WMIsPLDictionary(pl)
#define PLIsSimple(pl) (WMIsPLString(pl) || WMIsPLData(pl))
#define PLIsCompound(pl) (WMIsPLArray(pl) || WMIsPLDictionary(pl))
#define PLIsEqual(pl1, pl2) WMIsPropListEqualTo(pl1, pl2)
#define PLGetString(pl) WMGetFromPLString(pl)
#define PLGetDataBytes(pl) WMGetPLDataBytes(pl)
#define PLGetDataLength(pl) WMGetPLDataLength(pl)
#define PLGetArrayElement(pl, index) WMGetFromPLArray(pl, index)
#define PLGetDictionaryEntry(pl, key) WMGetFromPLDictionary(pl, key)
#define PLGetAllDictionaryKeys(pl) WMGetPLDictionaryKeys(pl)
#define PLShallowCopy(pl) WMShallowCopyPropList(pl)
#define PLDeepCopy(pl) WMDeepCopyPropList(pl)
#define PLGetProplistWithDescription(desc) WMCreatePropListFromDescription(desc)
#define PLGetDescriptionIndent(pl, level) WMGetPropListDescription(pl, True)
#define PLGetDescription(pl) WMGetPropListDescription(pl, False)
#define PLGetStringDescription(pl) WMGetPropListDescription(pl, False)
#define PLGetDataDescription(pl) WMGetPropListDescription(pl, False)
#define PLGetProplistWithPath(file) WMReadPropListFromFile(file)
#define PLSave(pl, file, atm) WMWritePropListToFile(pl, file, atm)
/* Unsupported functions. Do not ask for them. They're evil :P */
#define PLSetStringCmpHook(fn) error_PLSetStringCmpHook_is_not_supported
#define PLDeepSynchronize(pl) error_PLDeepSynchronize_is_not_supported
#define PLSynchronize(pl) error_PLSynchronize_is_not_supported
#define PLShallowSynchronize(pl) error_PLShallowSynchronize_is_not_supported
#define PLSetFilename(pl, filename) error_PLSetFilename_is_not_supported
#define PLGetFilename(pl, filename) error_PLGetFilename_is_not_supported
#define PLGetContainer(pl) error_PLGetContainer_is_not_supported
#define PLGetDomainNames error_PLGetDomainNames_is_not_supported
#define PLGetDomain(name) error_PLGetDomain_is_not_supported
#define PLSetDomain(name, value, kickme) error_PLSetDomain_is_not_supported
#define PLDeleteDomain(name, kickme) error_PLDeleteDomain_is_not_supported
#define PLRegister(name, callback) error_PLRegister_is_not_supported
#define PLUnregister(name) error_PLUnregister_is_not_supported
#endif

View File

@@ -1,227 +0,0 @@
#ifndef _WUTIL_H_
#define _WUTIL_H_
#include <X11/Xlib.h>
#include <sys/types.h>
/*
* Warning: proplist.h #defines BOOL which will clash with the
* typedef BOOL in Xmd.h
* proplist.h should use Bool (which is a #define in Xlib.h) instead.
*
*/
#include <proplist.h>
#ifndef WMAX
# define WMAX(a,b) ((a)>(b) ? (a) : (b))
#endif
#ifndef WMIN
# define WMIN(a,b) ((a)<(b) ? (a) : (b))
#endif
typedef enum {
WMPostWhenIdle = 1,
WMPostASAP = 2,
WMPostNow = 3
} WMPostingStyle;
typedef enum {
WNCNone = 0,
WNCOnName = 1,
WNCOnSender = 2
} WMNotificationCoalescing;
typedef struct W_HashTable WMHashTable;
typedef struct W_UserDefaults WMUserDefaults;
typedef struct W_Notification WMNotification;
typedef struct W_NotificationQueue WMNotificationQueue;
/* DO NOT ACCESS THE CONTENTS OF THIS STRUCT */
typedef struct {
void *table;
void *nextItem;
int index;
} WMHashEnumerator;
typedef struct {
/* NULL is pointer hash */
unsigned (*hash)(const void *);
/* NULL is pointer compare */
Bool (*keyIsEqual)(const void *, const void *);
/* NULL does nothing */
void* (*retainKey)(const void *);
/* NULL does nothing */
void (*releaseKey)(const void *);
} WMHashTableCallbacks;
typedef void WMNotificationObserverAction(void *observerData,
WMNotification *notification);
/*......................................................................*/
void wfatal(const char *msg, ...);
void wwarning(const char *msg, ...);
void wsyserror(const char *msg, ...);
char *wfindfile(char *paths, char *file);
char *wfindfileinlist(char **path_list, char *file);
char *wexpandpath(char *path);
/* don't free the returned string */
char *wgethomedir();
void *wmalloc(size_t size);
void *wrealloc(void *ptr, size_t newsize);
void wrelease(void *ptr);
void *wretain(void *ptr);
char *wstrdup(char *str);
char *wstrappend(char *dst, char *src);
char *wusergnusteppath();
char *wdefaultspathfordomain(char *domain);
void wusleep(unsigned int microsec);
/*......................................................................*/
WMHashTable *WMCreateHashTable(WMHashTableCallbacks callbacks);
void WMFreeHashTable(WMHashTable *table);
void WMResetHashTable(WMHashTable *table);
void *WMHashGet(WMHashTable *table, const void *key);
/* put data in table, replacing already existing data and returning
* the old value */
void *WMHashInsert(WMHashTable *table, void *key, void *data);
void WMHashRemove(WMHashTable *table, const void *key);
/* warning: do not manipulate the table while using these functions */
WMHashEnumerator WMEnumerateHashTable(WMHashTable *table);
void *WMNextHashEnumeratorItem(WMHashEnumerator *enumerator);
unsigned WMCountHashTable(WMHashTable *table);
/* some predefined callback sets */
extern const WMHashTableCallbacks WMIntHashCallbacks;
/* sizeof(keys) are <= sizeof(void*) */
extern const WMHashTableCallbacks WMStringHashCallbacks;
/* keys are strings. Strings will be copied with wstrdup()
* and freed with free() */
extern const WMHashTableCallbacks WMStringPointerHashCallbacks;
/* keys are strings, bug they are not copied */
/*......................................................................*/
WMNotification *WMCreateNotification(char *name, void *object, void *clientData);
void WMReleaseNotification(WMNotification *notification);
WMNotification *WMRetainNotification(WMNotification *notification);
void *WMGetNotificationClientData(WMNotification *notification);
void *WMGetNotificationObject(WMNotification *notification);
char *WMGetNotificationName(WMNotification *notification);
void WMAddNotificationObserver(WMNotificationObserverAction *observerAction,
void *observer, char *name, void *object);
void WMPostNotification(WMNotification *notification);
void WMRemoveNotificationObserver(void *observer);
void WMRemoveNotificationObserverWithName(void *observer, char *name,
void *object);
void WMPostNotificationName(char *name, void *object, void *clientData);
WMNotificationQueue *WMGetDefaultNotificationQueue(void);
WMNotificationQueue *WMCreateNotificationQueue(void);
void WMDequeueNotificationMatching(WMNotificationQueue *queue, unsigned mask);
void WMEnqueueNotification(WMNotificationQueue *queue, WMNotification *notification,
WMPostingStyle postingStyle);
void WMEnqueueCoalesceNotification(WMNotificationQueue *queue,
WMNotification *notification,
WMPostingStyle postingStyle,
unsigned coalesceMask);
/*......................................................................*/
WMUserDefaults *WMGetStandardUserDefaults(void);
proplist_t WMGetUDObjectForKey(WMUserDefaults *database, char *defaultName);
void WMSetUDObjectForKey(WMUserDefaults *database, proplist_t object,
char *defaultName);
void WMRemoveUDObjectForKey(WMUserDefaults *database, char *defaultName);
/* you can free the returned string */
char *WMGetUDStringForKey(WMUserDefaults *database, char *defaultName);
int WMGetUDIntegerForKey(WMUserDefaults *database, char *defaultName);
int WMGetUDFloatForKey(WMUserDefaults *database, char *defaultName);
Bool WMGetUDBoolForKey(WMUserDefaults *database, char *defaultName);
void WMSetUDStringForKey(WMUserDefaults *database, char *value,
char *defaultName);
void WMSetUDIntegerForKey(WMUserDefaults *database, int value,
char *defaultName);
void WMSetUDFloatForKey(WMUserDefaults *database, float value,
char *defaultName);
void WMSetUDBoolForKey(WMUserDefaults *database, Bool value,
char *defaultName);
proplist_t WMGetUDSearchList(WMUserDefaults *database);
void WMSetUDSearchList(WMUserDefaults *database, proplist_t list);
#endif

366
WINGs/array.c Normal file
View File

@@ -0,0 +1,366 @@
/*
* Dynamically Resized Array
*
* Authors: Alfredo K. Kojima <kojima@windowmaker.org>
* Dan Pascu <dan@windowmaker.org>
*
* This code is released to the Public Domain, but
* proper credit is always appreciated :)
*/
#include <stdlib.h>
#include <string.h>
#include "WUtil.h"
#define INITIAL_SIZE 8
#define RESIZE_INCREMENT 8
typedef struct W_Array {
void **items; /* the array data */
int itemCount; /* # of items in array */
int allocSize; /* allocated size of array */
WMFreeDataProc *destructor; /* the destructor to free elements */
} W_Array;
WMArray*
WMCreateArray(int initialSize)
{
return WMCreateArrayWithDestructor(initialSize, NULL);
}
WMArray*
WMCreateArrayWithDestructor(int initialSize, WMFreeDataProc *destructor)
{
WMArray *array;
array = wmalloc(sizeof(WMArray));
if (initialSize <= 0) {
initialSize = INITIAL_SIZE;
}
array->items = wmalloc(sizeof(void*) * initialSize);
array->itemCount = 0;
array->allocSize = initialSize;
array->destructor = destructor;
return array;
}
WMArray*
WMCreateArrayWithArray(WMArray *array)
{
WMArray *newArray;
newArray = wmalloc(sizeof(WMArray));
newArray->items = wmalloc(sizeof(void*) * array->allocSize);
memcpy(newArray->items, array->items, sizeof(void*)*array->itemCount);
newArray->itemCount = array->itemCount;
newArray->allocSize = array->allocSize;
newArray->destructor = NULL;
return newArray;
}
void
WMEmptyArray(WMArray *array)
{
if (array->destructor) {
while (array->itemCount > 0) {
array->itemCount--;
array->destructor(array->items[array->itemCount]);
}
}
/*memset(array->items, 0, array->itemCount * sizeof(void*));*/
array->itemCount = 0;
}
void
WMFreeArray(WMArray *array)
{
WMEmptyArray(array);
wfree(array->items);
wfree(array);
}
int
WMGetArrayItemCount(WMArray *array)
{
return array->itemCount;
}
void
WMAppendArray(WMArray *array, WMArray *other)
{
if (other->itemCount == 0)
return;
if (array->itemCount + other->itemCount > array->allocSize) {
array->allocSize += other->allocSize;
array->items = wrealloc(array->items, sizeof(void*)*array->allocSize);
}
memcpy(array->items+array->itemCount, other->items,
sizeof(void*)*other->itemCount);
array->itemCount += other->itemCount;
}
void
WMAddToArray(WMArray *array, void *item)
{
if (array->itemCount >= array->allocSize) {
array->allocSize += RESIZE_INCREMENT;
array->items = wrealloc(array->items, sizeof(void*)*array->allocSize);
}
array->items[array->itemCount] = item;
array->itemCount++;
}
void
WMInsertInArray(WMArray *array, int index, void *item)
{
wassertr(index >= 0 && index <= array->itemCount);
if (array->itemCount >= array->allocSize) {
array->allocSize += RESIZE_INCREMENT;
array->items = wrealloc(array->items, sizeof(void*)*array->allocSize);
}
if (index < array->itemCount) {
memmove(array->items+index+1, array->items+index,
sizeof(void*)*(array->itemCount-index));
}
array->items[index] = item;
array->itemCount++;
}
void*
WMReplaceInArray(WMArray *array, int index, void *item)
{
void *old;
wassertrv(index >= 0 && index <= array->itemCount, NULL);
/* is it really useful to perform append if index == array->itemCount ? -Dan */
if (index == array->itemCount) {
WMAddToArray(array, item);
return NULL;
}
old = array->items[index];
array->items[index] = item;
return old;
}
int
WMDeleteFromArray(WMArray *array, int index)
{
wassertrv(index >= 0 && index < array->itemCount, 0);
if (array->destructor) {
array->destructor(array->items[index]);
}
if (index < array->itemCount-1) {
memmove(array->items+index, array->items+index+1,
sizeof(void*)*(array->itemCount-index-1));
}
array->itemCount--;
return 1;
}
int
WMRemoveFromArrayMatching(WMArray *array, WMMatchDataProc *match, void *cdata)
{
int i;
if (match != NULL) {
for (i = 0; i < array->itemCount; i++) {
if ((*match)(array->items[i], cdata)) {
WMDeleteFromArray(array, i);
return 1;
}
}
} else {
for (i = 0; i < array->itemCount; i++) {
if (array->items[i] == cdata) {
WMDeleteFromArray(array, i);
return 1;
}
}
}
return 0;
}
void*
WMGetFromArray(WMArray *array, int index)
{
if (index < 0 || index >= array->itemCount)
return NULL;
return array->items[index];
}
void*
WMPopFromArray(WMArray *array)
{
array->itemCount--;
return array->items[array->itemCount];
}
int
WMFindInArray(WMArray *array, WMMatchDataProc *match, void *cdata)
{
int i;
if (match!=NULL) {
for (i = 0; i < array->itemCount; i++) {
if ((*match)(array->items[i], cdata))
return i;
}
} else {
for (i = 0; i < array->itemCount; i++) {
if (array->items[i] == cdata)
return i;
}
}
return WANotFound;
}
int
WMCountInArray(WMArray *array, void *item)
{
int i, count;
for (i=0, count=0; i<array->itemCount; i++) {
if (array->items[i] == item)
count++;
}
return count;
}
void
WMSortArray(WMArray *array, WMCompareDataProc *comparer)
{
qsort(array->items, array->itemCount, sizeof(void*), comparer);
}
void
WMMapArray(WMArray *array, void (*function)(void*, void*), void *data)
{
int i;
for (i=0; i<array->itemCount; i++) {
(*function)(array->items[i], data);
}
}
WMArray*
WMGetSubarrayWithRange(WMArray* array, WMRange aRange)
{
WMArray *newArray;
if (aRange.count <= 0)
return WMCreateArray(0);
if (aRange.position < 0)
aRange.position = 0;
if (aRange.position >= array->itemCount)
aRange.position = array->itemCount - 1;
if (aRange.position + aRange.count > array->itemCount)
aRange.count = array->itemCount - aRange.position;
newArray = WMCreateArray(aRange.count);
memcpy(newArray->items, array->items+aRange.position,
sizeof(void*)*aRange.count);
newArray->itemCount = aRange.count;
return newArray;
}
void*
WMArrayFirst(WMArray *array, WMArrayIterator *iter)
{
if (array->itemCount == 0) {
*iter = WANotFound;
return NULL;
} else {
*iter = 0;
return array->items[0];
}
}
void*
WMArrayLast(WMArray *array, WMArrayIterator *iter)
{
if (array->itemCount == 0) {
*iter = WANotFound;
return NULL;
} else {
*iter = array->itemCount-1;
return array->items[*iter];
}
}
void*
WMArrayNext(WMArray *array, WMArrayIterator *iter)
{
if (*iter >= 0 && *iter < array->itemCount-1) {
return array->items[++(*iter)];
} else {
*iter = WANotFound;
return NULL;
}
}
void*
WMArrayPrevious(WMArray *array, WMArrayIterator *iter)
{
if (*iter > 0 && *iter < array->itemCount) {
return array->items[--(*iter)];
} else {
*iter = WANotFound;
return NULL;
}
}

868
WINGs/bagtree.c Normal file
View File

@@ -0,0 +1,868 @@
#include <stdlib.h>
#include <string.h>
#include "WUtil.h"
typedef struct W_Node {
struct W_Node *parent;
struct W_Node *left;
struct W_Node *right;
int color;
void *data;
int index;
} W_Node;
typedef struct W_Bag {
W_Node *root;
W_Node *nil; /* sentinel */
int count;
void (*destructor)(void *item);
} W_Bag;
#define IS_LEFT(node) (node == node->parent->left)
#define IS_RIGHT(node) (node == node->parent->right)
static void
leftRotate(W_Bag *tree, W_Node *node)
{
W_Node *node2;
node2 = node->right;
node->right = node2->left;
node2->left->parent = node;
node2->parent = node->parent;
if (node->parent == tree->nil) {
tree->root = node2;
} else {
if (IS_LEFT(node)) {
node->parent->left = node2;
} else {
node->parent->right = node2;
}
}
node2->left = node;
node->parent = node2;
}
static void
rightRotate(W_Bag *tree, W_Node *node)
{
W_Node *node2;
node2 = node->left;
node->left = node2->right;
node2->right->parent = node;
node2->parent = node->parent;
if (node->parent == tree->nil) {
tree->root = node2;
} else {
if (IS_LEFT(node)) {
node->parent->left = node2;
} else {
node->parent->right = node2;
}
}
node2->right = node;
node->parent = node2;
}
static void
treeInsert(W_Bag *tree, W_Node *node)
{
W_Node *y = tree->nil;
W_Node *x = tree->root;
while (x != tree->nil) {
y = x;
if (node->index <= x->index)
x = x->left;
else
x = x->right;
}
node->parent = y;
if (y == tree->nil)
tree->root = node;
else if (node->index <= y->index)
y->left = node;
else
y->right = node;
}
static void
rbTreeInsert(W_Bag *tree, W_Node *node)
{
W_Node *y;
treeInsert(tree, node);
node->color = 'R';
while (node != tree->root && node->parent->color == 'R') {
if (IS_LEFT(node->parent)) {
y = node->parent->parent->right;
if (y->color == 'R') {
node->parent->color = 'B';
y->color = 'B';
node->parent->parent->color = 'R';
node = node->parent->parent;
} else {
if (IS_RIGHT(node)) {
node = node->parent;
leftRotate(tree, node);
}
node->parent->color = 'B';
node->parent->parent->color = 'R';
rightRotate(tree, node->parent->parent);
}
} else {
y = node->parent->parent->left;
if (y->color == 'R') {
node->parent->color = 'B';
y->color = 'B';
node->parent->parent->color = 'R';
node = node->parent->parent;
} else {
if (IS_LEFT(node)) {
node = node->parent;
rightRotate(tree, node);
}
node->parent->color = 'B';
node->parent->parent->color = 'R';
leftRotate(tree, node->parent->parent);
}
}
}
tree->root->color = 'B';
}
static void
rbDeleteFixup(W_Bag *tree, W_Node *node)
{
W_Node *w;
while (node != tree->root && node->color == 'B') {
if (IS_LEFT(node)) {
w = node->parent->right;
if (w->color == 'R') {
w->color = 'B';
node->parent->color = 'R';
leftRotate(tree, node->parent);
w = node->parent->right;
}
if (w->left->color == 'B' && w->right->color == 'B') {
w->color = 'R';
node = node->parent;
} else {
if (w->right->color == 'B') {
w->left->color = 'B';
w->color = 'R';
rightRotate(tree, w);
w = node->parent->right;
}
w->color = node->parent->color;
node->parent->color = 'B';
w->right->color = 'B';
leftRotate(tree, node->parent);
node = tree->root;
}
} else {
w = node->parent->left;
if (w->color == 'R') {
w->color = 'B';
node->parent->color = 'R';
rightRotate(tree, node->parent);
w = node->parent->left;
}
if (w->left->color == 'B' && w->right->color == 'B') {
w->color = 'R';
node = node->parent;
} else {
if (w->left->color == 'B') {
w->right->color = 'B';
w->color = 'R';
leftRotate(tree, w);
w = node->parent->left;
}
w->color = node->parent->color;
node->parent->color = 'B';
w->left->color = 'B';
rightRotate(tree, node->parent);
node = tree->root;
}
}
}
node->color = 'B';
}
static W_Node*
treeMinimum(W_Node *node, W_Node *nil)
{
while (node->left != nil)
node = node->left;
return node;
}
static W_Node*
treeMaximum(W_Node *node, W_Node *nil)
{
while (node->right != nil)
node = node->right;
return node;
}
static W_Node*
treeSuccessor(W_Node *node, W_Node *nil)
{
W_Node *y;
if (node->right != nil) {
return treeMinimum(node->right, nil);
}
y = node->parent;
while (y != nil && node == y->right) {
node = y;
y = y->parent;
}
return y;
}
static W_Node*
treePredecessor(W_Node *node, W_Node *nil)
{
W_Node *y;
if (node->left != nil) {
return treeMaximum(node->left, nil);
}
y = node->parent;
while (y != nil && node == y->left) {
node = y;
y = y->parent;
}
return y;
}
static W_Node*
rbTreeDelete(W_Bag *tree, W_Node *node)
{
W_Node *nil = tree->nil;
W_Node *x, *y;
if (node->left == nil || node->right == nil) {
y = node;
} else {
y = treeSuccessor(node, nil);
}
if (y->left != nil) {
x = y->left;
} else {
x = y->right;
}
x->parent = y->parent;
if (y->parent == nil) {
tree->root = x;
} else {
if (IS_LEFT(y)) {
y->parent->left = x;
} else {
y->parent->right = x;
}
}
if (y != node) {
node->index = y->index;
node->data = y->data;
}
if (y->color == 'B') {
rbDeleteFixup(tree, x);
}
return y;
}
static W_Node*
treeSearch(W_Node *root, W_Node *nil, int index)
{
if (root == nil || root->index == index) {
return root;
}
if (index < root->index) {
return treeSearch(root->left, nil, index);
} else {
return treeSearch(root->right, nil, index);
}
}
static W_Node*
treeFind(W_Node *root, W_Node *nil, void *data)
{
W_Node *tmp;
if (root == nil || root->data == data)
return root;
tmp = treeFind(root->left, nil, data);
if (tmp != nil)
return tmp;
tmp = treeFind(root->right, nil, data);
return tmp;
}
#if 0
static char buf[512];
static void
printNodes(W_Node *node, W_Node *nil, int depth)
{
if (node == nil) {
return;
}
printNodes(node->left, nil, depth+1);
memset(buf, ' ', depth*2);
buf[depth*2] = 0;
if (IS_LEFT(node))
printf("%s/(%2i\n", buf, node->index);
else
printf("%s\\(%2i\n", buf, node->index);
printNodes(node->right, nil, depth+1);
}
void
PrintTree(WMBag *bag)
{
W_TreeBag *tree = (W_TreeBag*)bag->data;
printNodes(tree->root, tree->nil, 0);
}
#endif
WMBag*
WMCreateTreeBag(void)
{
return WMCreateTreeBagWithDestructor(NULL);
}
WMBag*
WMCreateTreeBagWithDestructor(WMFreeDataProc *destructor)
{
WMBag *bag;
bag = wmalloc(sizeof(WMBag));
memset(bag, 0, sizeof(WMBag));
bag->nil = wmalloc(sizeof(W_Node));
memset(bag->nil, 0, sizeof(W_Node));
bag->nil->left = bag->nil->right = bag->nil->parent = bag->nil;
bag->nil->index = WBNotFound;
bag->root = bag->nil;
bag->destructor = destructor;
return bag;
}
int
WMGetBagItemCount(WMBag *self)
{
return self->count;
}
void
WMAppendBag(WMBag *self, WMBag *bag)
{
WMBagIterator ptr;
void *data;
for (data = WMBagFirst(bag, &ptr); data != NULL; data = WMBagNext(bag, &ptr)) {
WMPutInBag(self, data);
}
}
void
WMPutInBag(WMBag *self, void *item)
{
W_Node *ptr;
ptr = wmalloc(sizeof(W_Node));
ptr->data = item;
ptr->index = self->count;
ptr->left = self->nil;
ptr->right = self->nil;
ptr->parent = self->nil;
rbTreeInsert(self, ptr);
self->count++;
}
void
WMInsertInBag(WMBag *self, int index, void *item)
{
W_Node *ptr;
ptr = wmalloc(sizeof(W_Node));
ptr->data = item;
ptr->index = index;
ptr->left = self->nil;
ptr->right = self->nil;
ptr->parent = self->nil;
rbTreeInsert(self, ptr);
while ((ptr = treeSuccessor(ptr, self->nil)) != self->nil) {
ptr->index++;
}
self->count++;
}
int
WMRemoveFromBag(WMBag *self, void *item)
{
W_Node *ptr = treeFind(self->root, self->nil, item);
if (ptr != self->nil) {
W_Node *tmp;
self->count--;
tmp = treeSuccessor(ptr, self->nil);
while (tmp != self->nil) {
tmp->index--;
tmp = treeSuccessor(tmp, self->nil);
}
ptr = rbTreeDelete(self, ptr);
if (self->destructor)
self->destructor(ptr->data);
wfree(ptr);
return 1;
} else {
return 0;
}
}
int
WMEraseFromBag(WMBag *self, int index)
{
W_Node *ptr = treeSearch(self->root, self->nil, index);
if (ptr != self->nil) {
self->count--;
ptr = rbTreeDelete(self, ptr);
if (self->destructor)
self->destructor(ptr->data);
wfree(ptr);
wassertrv(self->count == 0||self->root->index >= 0, 1);
return 1;
} else {
return 0;
}
}
int
WMDeleteFromBag(WMBag *self, int index)
{
W_Node *ptr = treeSearch(self->root, self->nil, index);
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;
}
}
void*
WMGetFromBag(WMBag *self, int index)
{
W_Node *node;
node = treeSearch(self->root, self->nil, index);
if (node != self->nil)
return node->data;
else
return NULL;
}
int
WMGetFirstInBag(WMBag *self, void *item)
{
W_Node *node;
node = treeFind(self->root, self->nil, item);
if (node != self->nil)
return node->index;
else
return WBNotFound;
}
static int
treeCount(W_Node *root, W_Node *nil, void *item)
{
int count = 0;
if (root == nil)
return 0;
if (root->data == item)
count++;
if (root->left != nil)
count += treeCount(root->left, nil, item);
if (root->right != nil)
count += treeCount(root->right, nil, item);
return count;
}
int
WMCountInBag(WMBag *self, void *item)
{
return treeCount(self->root, self->nil, item);
}
void*
WMReplaceInBag(WMBag *self, int index, void *item)
{
W_Node *ptr = treeSearch(self->root, self->nil, index);
void *old = NULL;
if (item == NULL) {
self->count--;
ptr = rbTreeDelete(self, ptr);
if (self->destructor)
self->destructor(ptr->data);
wfree(ptr);
} else if (ptr != self->nil) {
old = ptr->data;
ptr->data = item;
} else {
W_Node *ptr;
ptr = wmalloc(sizeof(W_Node));
ptr->data = item;
ptr->index = index;
ptr->left = self->nil;
ptr->right = self->nil;
ptr->parent = self->nil;
rbTreeInsert(self, ptr);
self->count++;
}
return old;
}
void
WMSortBag(WMBag *self, WMCompareDataProc *comparer)
{
void **items;
W_Node *tmp;
int i;
if (self->count == 0)
return;
items = wmalloc(sizeof(void*)*self->count);
i = 0;
tmp = treeMinimum(self->root, self->nil);
while (tmp != self->nil) {
items[i++] = tmp->data;
tmp = treeSuccessor(tmp, self->nil);
}
qsort(&items[0], self->count, sizeof(void*), comparer);
i = 0;
tmp = treeMinimum(self->root, self->nil);
while (tmp != self->nil) {
tmp->index = i;
tmp->data = items[i++];
tmp = treeSuccessor(tmp, self->nil);
}
wfree(items);
}
static void
deleteTree(WMBag *self, W_Node *node)
{
if (node == self->nil)
return;
deleteTree(self, node->left);
if (self->destructor)
self->destructor(node->data);
deleteTree(self, node->right);
wfree(node);
}
void
WMEmptyBag(WMBag *self)
{
deleteTree(self, self->root);
self->root = self->nil;
self->count = 0;
}
void
WMFreeBag(WMBag *self)
{
WMEmptyBag(self);
wfree(self->nil);
wfree(self);
}
static void
mapTree(W_Bag *tree, W_Node *node, void (*function)(void*, void*), void *data)
{
if (node == tree->nil)
return;
mapTree(tree, node->left, function, data);
(*function)(node->data, data);
mapTree(tree, node->right, function, data);
}
void
WMMapBag(WMBag *self, void (*function)(void*, void*), void *data)
{
mapTree(self, self->root, function, data);
}
static int
findInTree(W_Bag *tree, W_Node *node, WMMatchDataProc *function, void *cdata)
{
int index;
if (node == tree->nil)
return WBNotFound;
index = findInTree(tree, node->left, function, cdata);
if (index != WBNotFound)
return index;
if ((*function)(node->data, cdata)) {
return node->index;
}
return findInTree(tree, node->right, function, cdata);
}
int
WMFindInBag(WMBag *self, WMMatchDataProc *match, void *cdata)
{
return findInTree(self, self->root, match, cdata);
}
void*
WMBagFirst(WMBag *self, WMBagIterator *ptr)
{
W_Node *node;
node = treeMinimum(self->root, self->nil);
if (node == self->nil) {
*ptr = NULL;
return NULL;
} else {
*ptr = node;
return node->data;
}
}
void*
WMBagLast(WMBag *self, WMBagIterator *ptr)
{
W_Node *node;
node = treeMaximum(self->root, self->nil);
if (node == self->nil) {
*ptr = NULL;
return NULL;
} else {
*ptr = node;
return node->data;
}
}
void*
WMBagNext(WMBag *self, WMBagIterator *ptr)
{
W_Node *node;
if (*ptr == NULL)
return NULL;
node = treeSuccessor(*ptr, self->nil);
if (node == self->nil) {
*ptr = NULL;
return NULL;
} else {
*ptr = node;
return node->data;
}
}
void*
WMBagPrevious(WMBag *self, WMBagIterator *ptr)
{
W_Node *node;
if (*ptr == NULL)
return NULL;
node = treePredecessor(*ptr, self->nil);
if (node == self->nil) {
*ptr = NULL;
return NULL;
} else {
*ptr = node;
return node->data;
}
}
void*
WMBagIteratorAtIndex(WMBag *self, int index, WMBagIterator *ptr)
{
W_Node *node;
node = treeSearch(self->root, self->nil, index);
if (node == self->nil) {
*ptr = NULL;
return NULL;
} else {
*ptr = node;
return node->data;
}
}
int
WMBagIndexForIterator(WMBag *bag, WMBagIterator ptr)
{
return ((W_Node*)ptr)->index;
}

View File

@@ -2,18 +2,42 @@
#include "WINGsP.h"
#include <proplist.h>
#include <X11/Xlocale.h>
_WINGsConfiguration WINGsConfiguration;
#define SYSTEM_FONT "-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*"
#define SYSTEM_FONT "-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-medium-r-*-*-%d-*-*-*-*-*-*-*"
#define BOLD_SYSTEM_FONT "-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*"
#define BOLD_SYSTEM_FONT "-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-bold-r-*-*-%d-*-*-*-*-*-*-*"
#define FLOPPY_PATH "/floppy"
static unsigned
getButtonWithName(const char *name, unsigned defaultButton)
{
if (strncmp(name, "Button", 6)==0 && strlen(name)==7) {
switch (name[6]) {
case '1':
return Button1;
case '2':
return Button2;
case '3':
return Button3;
case '4':
return Button4;
case '5':
return Button5;
default:
break;
}
}
return defaultButton;
}
void
@@ -26,24 +50,92 @@ W_ReadConfigurations(void)
defaults = WMGetStandardUserDefaults();
if (defaults) {
char *buttonName;
unsigned button;
char *str;
WINGsConfiguration.systemFont =
WMGetUDStringForKey(defaults, "SystemFont");
WINGsConfiguration.boldSystemFont =
WMGetUDStringForKey(defaults, "BoldSystemFont");
WINGsConfiguration.useMultiByte = False;
str = WMGetUDStringForKey(defaults, "MultiByteText");
if (str) {
if (strcasecmp(str, "YES") == 0) {
WINGsConfiguration.useMultiByte = True;
} else if (strcasecmp(str, "AUTO") == 0) {
char *locale;
/* if it's a multibyte language (japanese, chinese or korean)
* then set it to True */
locale = setlocale(LC_CTYPE, NULL);
if (locale != NULL
&& (strncmp(locale, "ja", 2) == 0
|| strncmp(locale, "zh", 2) == 0
|| strncmp(locale, "ko", 2) == 0)) {
WINGsConfiguration.useMultiByte = True;
}
}
}
WINGsConfiguration.doubleClickDelay =
WMGetUDIntegerForKey(defaults, "DoubleClickTime");
WMGetUDIntegerForKey(defaults, "DoubleClickTime");
WINGsConfiguration.floppyPath =
WMGetUDStringForKey(defaults, "FloppyPath");
buttonName = WMGetUDStringForKey(defaults, "MouseWheelUp");
if (buttonName) {
button = getButtonWithName(buttonName, Button4);
wfree(buttonName);
} else {
button = Button4;
}
WINGsConfiguration.mouseWheelUp = button;
buttonName = WMGetUDStringForKey(defaults, "MouseWheelDown");
if (buttonName) {
button = getButtonWithName(buttonName, Button5);
wfree(buttonName);
} else {
button = Button5;
}
WINGsConfiguration.mouseWheelDown = button;
if (WINGsConfiguration.mouseWheelDown==WINGsConfiguration.mouseWheelUp) {
WINGsConfiguration.mouseWheelUp = Button4;
WINGsConfiguration.mouseWheelDown = Button5;
}
WINGsConfiguration.defaultFontSize =
WMGetUDIntegerForKey(defaults, "DefaultFontSize");
}
if (!WINGsConfiguration.systemFont) {
WINGsConfiguration.systemFont = SYSTEM_FONT;
}
if (!WINGsConfiguration.boldSystemFont) {
WINGsConfiguration.boldSystemFont = BOLD_SYSTEM_FONT;
}
if (!WINGsConfiguration.floppyPath) {
WINGsConfiguration.floppyPath = FLOPPY_PATH;
}
if (WINGsConfiguration.doubleClickDelay == 0) {
WINGsConfiguration.doubleClickDelay = 250;
}
if (WINGsConfiguration.mouseWheelUp == 0) {
WINGsConfiguration.mouseWheelUp = Button4;
}
if (WINGsConfiguration.mouseWheelDown == 0) {
WINGsConfiguration.mouseWheelDown = Button5;
}
if (WINGsConfiguration.defaultFontSize == 0) {
WINGsConfiguration.defaultFontSize = 12;
}
}

1022
WINGs/connection.c Normal file

File diff suppressed because it is too large Load Diff

350
WINGs/data.c Normal file
View File

@@ -0,0 +1,350 @@
/*
* WINGs WMData function library
*
* Copyright (c) 1999-2002 Dan Pascu
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <string.h>
#include "WUtil.h"
typedef struct W_Data {
unsigned length; /* How many bytes we have */
unsigned capacity; /* How many bytes it can hold */
unsigned growth; /* How much to grow */
void *bytes; /* Actual data */
unsigned retainCount;
WMFreeDataProc *destructor;
int format; /* 0, 8, 16 or 32 */
} W_Data;
/* Creating and destroying data objects */
WMData*
WMCreateDataWithCapacity(unsigned capacity)
{
WMData *aData;
aData = (WMData*)wmalloc(sizeof(WMData));
if (capacity>0)
aData->bytes = wmalloc(capacity);
else
aData->bytes = NULL;
aData->capacity = capacity;
aData->growth = capacity/2 > 0 ? capacity/2 : 1;
aData->length = 0;
aData->retainCount = 1;
aData->format = 0;
aData->destructor = wfree;
return aData;
}
WMData*
WMCreateDataWithLength(unsigned length)
{
WMData *aData;
aData = WMCreateDataWithCapacity(length);
if (length>0) {
memset(aData->bytes, 0, length);
aData->length = length;
}
return aData;
}
WMData*
WMCreateDataWithBytes(void *bytes, unsigned length)
{
WMData *aData;
aData = WMCreateDataWithCapacity(length);
aData->length = length;
memcpy(aData->bytes, bytes, length);
return aData;
}
WMData*
WMCreateDataWithBytesNoCopy(void *bytes, unsigned length,
WMFreeDataProc *destructor)
{
WMData *aData;
aData = (WMData*)wmalloc(sizeof(WMData));
aData->length = length;
aData->capacity = length;
aData->growth = length/2 > 0 ? length/2 : 1;
aData->bytes = bytes;
aData->retainCount = 1;
aData->format = 0;
aData->destructor = destructor;
return aData;
}
WMData*
WMCreateDataWithData(WMData *aData)
{
WMData *newData;
if (aData->length > 0) {
newData = WMCreateDataWithBytes(aData->bytes, aData->length);
} else {
newData = WMCreateDataWithCapacity(0);
}
newData->format = aData->format;
return newData;
}
WMData*
WMRetainData(WMData *aData)
{
aData->retainCount++;
return aData;
}
void
WMReleaseData(WMData *aData)
{
aData->retainCount--;
if (aData->retainCount > 0)
return;
if (aData->bytes!=NULL && aData->destructor!=NULL) {
aData->destructor(aData->bytes);
}
wfree(aData);
}
/* Adjusting capacity */
void
WMSetDataCapacity(WMData *aData, unsigned capacity)
{
if (aData->capacity != capacity) {
aData->bytes = wrealloc(aData->bytes, capacity);
aData->capacity = capacity;
aData->growth = capacity/2 > 0 ? capacity/2 : 1;
}
if (aData->length > capacity) {
aData->length = capacity;
}
}
void
WMSetDataLength(WMData *aData, unsigned length)
{
if (length > aData->capacity) {
WMSetDataCapacity(aData, length);
}
if (length > aData->length) {
memset((unsigned char*)aData->bytes + aData->length, 0,
length - aData->length);
}
aData->length = length;
}
void
WMSetDataFormat(WMData *aData, unsigned format)
{
aData->format = format;
}
void
WMIncreaseDataLengthBy(WMData *aData, unsigned extraLength)
{
WMSetDataLength(aData, aData->length + extraLength);
}
/* Accessing data */
const void*
WMDataBytes(WMData *aData)
{
return aData->bytes;
}
void
WMGetDataBytes(WMData *aData, void *buffer)
{
wassertr(aData->length > 0);
memcpy(buffer, aData->bytes, aData->length);
}
unsigned
WMGetDataFormat(WMData *aData)
{
return aData->format;
}
void
WMGetDataBytesWithLength(WMData *aData, void *buffer, unsigned length)
{
wassertr(aData->length > 0);
wassertr(length <= aData->length);
memcpy(buffer, aData->bytes, length);
}
void
WMGetDataBytesWithRange(WMData *aData, void *buffer, WMRange aRange)
{
wassertr(aRange.position < aData->length);
wassertr(aRange.count <= aData->length-aRange.position);
memcpy(buffer, (unsigned char*)aData->bytes + aRange.position,
aRange.count);
}
WMData*
WMGetSubdataWithRange(WMData *aData, WMRange aRange)
{
void *buffer;
WMData *newData;
if (aRange.count <= 0)
return WMCreateDataWithCapacity(0);
buffer = wmalloc(aRange.count);
WMGetDataBytesWithRange(aData, buffer, aRange);
newData = WMCreateDataWithBytesNoCopy(buffer, aRange.count, wfree);
newData->format = aData->format;
return newData;
}
/* Testing data */
Bool
WMIsDataEqualToData(WMData *aData, WMData *anotherData)
{
if (aData->length != anotherData->length)
return False;
else if (!aData->bytes && !anotherData->bytes) /* both are empty */
return True;
else if (!aData->bytes || !anotherData->bytes) /* one of them is empty */
return False;
return (memcmp(aData->bytes, anotherData->bytes, aData->length)==0);
}
unsigned
WMGetDataLength(WMData *aData)
{
return aData->length;
}
/* Adding data */
void
WMAppendDataBytes(WMData *aData, void *bytes, unsigned length)
{
unsigned oldLength = aData->length;
unsigned newLength = oldLength + length;
if (newLength > aData->capacity) {
unsigned nextCapacity = aData->capacity + aData->growth;
unsigned nextGrowth = aData->capacity ? aData->capacity : 1;
while (nextCapacity < newLength) {
unsigned tmp = nextCapacity + nextGrowth;
nextGrowth = nextCapacity;
nextCapacity = tmp;
}
WMSetDataCapacity(aData, nextCapacity);
aData->growth = nextGrowth;
}
memcpy((unsigned char*)aData->bytes + oldLength, bytes, length);
aData->length = newLength;
}
void
WMAppendData(WMData *aData, WMData *anotherData)
{
if (anotherData->length > 0)
WMAppendDataBytes(aData, anotherData->bytes, anotherData->length);
}
/* Modifying data */
void
WMReplaceDataBytesInRange(WMData *aData, WMRange aRange, void *bytes)
{
wassertr(aRange.position < aData->length);
wassertr(aRange.count <= aData->length-aRange.position);
memcpy((unsigned char*)aData->bytes + aRange.position, bytes, aRange.count);
}
void
WMResetDataBytesInRange(WMData *aData, WMRange aRange)
{
wassertr(aRange.position < aData->length);
wassertr(aRange.count <= aData->length-aRange.position);
memset((unsigned char*)aData->bytes + aRange.position, 0, aRange.count);
}
void
WMSetData(WMData *aData, WMData *anotherData)
{
unsigned length = anotherData->length;
WMSetDataCapacity(aData, length);
if (length > 0)
memcpy(aData->bytes, anotherData->bytes, length);
aData->length = length;
}
/* Storing data */

226
WINGs/dragdestination.c Normal file
View File

@@ -0,0 +1,226 @@
#include <X11/Xatom.h>
#include "WINGsP.h"
/* dropping */
typedef struct W_DNDTargetInfo {
/* data types accepted for drops */
Atom *dropTypes;
int dropTypeCount;
} DNDTargetInfo;
static Atom XDNDversion = XDND_VERSION;
static void
realizedObserver(void *self, WMNotification *notif)
{
WMView *view = (WMView*)WMGetNotificationObject(notif);
XChangeProperty(W_VIEW_SCREEN(view)->display, W_VIEW_DRAWABLE(view),
W_VIEW_SCREEN(view)->xdndAwareAtom,
XA_ATOM, 32, PropModeReplace,
(unsigned char*)&XDNDversion, 1);
WMRemoveNotificationObserver(self);
}
void
W_SetXdndAwareProperty(WMScreen *scr, WMView *view, Atom *types, int typeCount)
{
Display *dpy = scr->display;
view = W_TopLevelOfView(view);
if (!view->flags.xdndHintSet) {
view->flags.xdndHintSet = 1;
if (view->flags.realized) {
XChangeProperty(dpy, W_VIEW_DRAWABLE(view), scr->xdndAwareAtom,
XA_ATOM, 32, PropModeReplace,
(unsigned char*)&XDNDversion, 1);
} else {
WMAddNotificationObserver(realizedObserver,
/* just use as an id */
&view->dragDestinationProcs,
WMViewRealizedNotification,
view);
}
}
}
void
WMRegisterViewForDraggedTypes(WMView *view, char *acceptedTypes[])
{
Atom *types;
int typeCount;
int i;
typeCount = 0;
while (acceptedTypes[typeCount++]);
types = wmalloc(sizeof(Atom)*(typeCount+1));
for (i = 0; i < typeCount; i++) {
types[i] = XInternAtom(W_VIEW_SCREEN(view)->display,
acceptedTypes[i], False);
}
types[i] = 0;
view->droppableTypes = types;
W_SetXdndAwareProperty(W_VIEW_SCREEN(view), view, types, typeCount);
}
void
WMUnregisterViewDraggedTypes(WMView *view)
{
if (view->droppableTypes != NULL)
wfree(view->droppableTypes);
view->droppableTypes = NULL;
}
/***********************************************************************/
static unsigned
defDraggingEntered(WMView *self, WMDraggingInfo *info)
{
printf("%x drag entered\n", W_VIEW_DRAWABLE(self));
return WDOperationNone;
}
static unsigned
defDraggingUpdated(WMView *self, WMDraggingInfo *info)
{
printf("%x drag update\n", W_VIEW_DRAWABLE(self));
return WDOperationNone;
}
static void
defDraggingExited(WMView *self, WMDraggingInfo *info)
{
printf("%x drag exit\n", W_VIEW_DRAWABLE(self));
}
static Bool
defPrepareForDragOperation(WMView *self, WMDraggingInfo *info)
{
printf("%x drag prepare\n", W_VIEW_DRAWABLE(self));
return False;
}
static Bool
defPerformDragOperation(WMView *self, WMDraggingInfo *info)
{
printf("%x drag perform\n", W_VIEW_DRAWABLE(self));
return False;
}
static void
defConcludeDragOperation(WMView *self, WMDraggingInfo *info)
{
printf("%x drag conclude\n", W_VIEW_DRAWABLE(self));
}
void
WMSetViewDragDestinationProcs(WMView *view, WMDragDestinationProcs *procs)
{
if (view->dragDestinationProcs == NULL) {
view->dragDestinationProcs = wmalloc(sizeof(WMDragDestinationProcs));
} else {
free(view->dragDestinationProcs);
}
*view->dragDestinationProcs = *procs;
/*XXX fill in non-implemented stuffs */
if (procs->draggingEntered == NULL) {
view->dragDestinationProcs->draggingEntered = defDraggingEntered;
}
if (procs->draggingUpdated == NULL) {
view->dragDestinationProcs->draggingUpdated = defDraggingUpdated;
}
if (procs->draggingExited == NULL) {
view->dragDestinationProcs->draggingExited = defDraggingExited;
}
if (procs->prepareForDragOperation == NULL) {
view->dragDestinationProcs->prepareForDragOperation =
defPrepareForDragOperation;
}
if (procs->performDragOperation == NULL) {
view->dragDestinationProcs->performDragOperation =
defPerformDragOperation;
}
if (procs->concludeDragOperation == NULL) {
view->dragDestinationProcs->concludeDragOperation =
defConcludeDragOperation;
}
}
WMPoint
WMGetDraggingInfoImageLocation(WMDraggingInfo *info)
{
return info->imageLocation;
}
static void
receivedData(WMView *view, Atom selection, Atom target, Time timestamp,
void *cdata, WMData *data)
{
}
Bool
WMRequestDroppedData(WMView *view, WMDraggingInfo *info, char *type,
WMDropDataCallback *callback)
{
#if 0
WMScreen *scr = W_VIEW_SCREEN(view);
if (info->finished) {
return False;
}
if (type != NULL) {
if (!WMRequestSelection(scr->dragInfo.destView,
scr->xdndSelectionAtom,
XInternAtom(scr->display, type, False),
scr->dragInfo.timestamp,
receivedData, &scr->dragInfo)) {
wwarning("could not request data for dropped data");
/* send finished message */
sendClientMessage(scr->display, source,
scr->xdndFinishedAtom,
scr->dragInfo.destinationWindow,
0, 0, 0, 0);
}
} else {
/* send finished message */
sendClientMessage(scr->display, source,
scr->xdndFinishedAtom,
scr->dragInfo.destinationWindow,
0, 0, 0, 0);
}
#endif
}

1335
WINGs/dragsource.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
/*
* WindowMaker miscelaneous function library
* Window Maker miscelaneous function library
*
* Copyright (c) 1997 Alfredo K. Kojima
* Copyright (c) 1997-2002 Alfredo K. Kojima
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
*/
#include "../src/config.h"
#include "wconfig.h"
#include <stdio.h>
#include <stdlib.h>
@@ -27,33 +27,63 @@
#include <string.h>
#include <errno.h>
extern char *_WINGS_progname;
#define MAXLINE 1024
/**************************************************************************
* Prints a fatal error message with variable arguments and terminates
/*********************************************************************
* Returns the system error message associated with error code 'errnum'
*********************************************************************/
char*
wstrerror(int errnum)
{
#if defined(HAVE_STRERROR)
return strerror(errnum);
#elif !defined(HAVE_STRERROR) && defined(BSD)
extern int errno, sys_nerr;
# ifndef __DECC
extern char *sys_errlist[];
# endif
static char buf[] = "Unknown error 12345678901234567890";
if (errno < sys_nerr)
return sys_errlist[errnum];
sprintf (buf, _("Unknown error %d"), errnum);
return buf;
#else /* no strerror() and no sys_errlist[] */
static char buf[] = "Error 12345678901234567890";
sprintf(buf, _("Error %d"), errnum);
return buf;
#endif
}
/*********************************************************************
* Prints a message with variable arguments
*
* msg - message to print with optional formatting
* ... - arguments to use on formatting
**************************************************************************/
void
wfatal(const char *msg, ...)
* ... - arguments to use on formatting
*********************************************************************/
void
wmessage(const char *msg, ...)
{
va_list args;
char buf[MAXLINE];
va_start(args, msg);
vsprintf(buf, msg, args);
vsnprintf(buf, MAXLINE-3, msg, args);
strcat(buf,"\n");
fflush(stdout);
fputs(_WINGS_progname, stderr);
fputs(" fatal error: ",stderr);
fputs(_WINGS_progname ? _WINGS_progname : "WINGs", stderr);
fputs(": ",stderr);
fputs(buf, stderr);
fflush(NULL);
fflush(stdout);
fflush(stderr);
va_end(args);
}
@@ -73,18 +103,46 @@ wwarning(const char *msg, ...)
va_start(args, msg);
vsprintf(buf, msg, args);
vsnprintf(buf, MAXLINE-3, msg, args);
strcat(buf,"\n");
fflush(stdout);
fputs(_WINGS_progname, stderr);
fputs(" warning: ",stderr);
fputs(_WINGS_progname ? _WINGS_progname : "WINGs", stderr);
fputs(_(" warning: "),stderr);
fputs(buf, stderr);
fflush(NULL);
fflush(stdout);
fflush(stderr);
va_end(args);
}
/**************************************************************************
* Prints a fatal error message with variable arguments and terminates
*
* msg - message to print with optional formatting
* ... - arguments to use on formatting
**************************************************************************/
void
wfatal(const char *msg, ...)
{
va_list args;
char buf[MAXLINE];
va_start(args, msg);
vsnprintf(buf, MAXLINE-3, msg, args);
strcat(buf,"\n");
fflush(stdout);
fputs(_WINGS_progname ? _WINGS_progname : "WINGs", stderr);
fputs(_(" fatal error: "),stderr);
fputs(buf, stderr);
fflush(stdout);
fflush(stderr);
va_end(args);
}
/*********************************************************************
* Prints a system error message with variable arguments
*
@@ -96,23 +154,49 @@ wsyserror(const char *msg, ...)
{
va_list args;
char buf[MAXLINE];
#ifdef HAVE_STRERROR
int error=errno;
#endif
va_start(args, msg);
vsprintf(buf, msg, args);
vsnprintf(buf, MAXLINE-3, msg, args);
fflush(stdout);
fputs(_WINGS_progname, stderr);
fputs(" error: ", stderr);
strcat(buf, ": ");
#ifdef HAVE_STRERROR
strcat(buf, strerror(error));
strcat(buf,"\n");
fputs(_WINGS_progname ? _WINGS_progname : "WINGs", stderr);
fputs(_(" error: "), stderr);
fputs(buf, stderr);
fflush(NULL);
#else
perror(buf);
#endif
fputs(": ", stderr);
fputs(wstrerror(error), stderr);
fputs("\n", stderr);
fflush(stderr);
fflush(stdout);
va_end(args);
}
/*********************************************************************
* Prints a system error message with variable arguments, being given
* the error code.
*
* error - the error code foe which to print the message
* msg - message to print with optional formatting
* ... - arguments to use on formatting
*********************************************************************/
void
wsyserrorwithcode(int error, const char *msg, ...)
{
va_list args;
char buf[MAXLINE];
va_start(args, msg);
vsnprintf(buf, MAXLINE-3, msg, args);
fflush(stdout);
fputs(_WINGS_progname ? _WINGS_progname : "WINGs", stderr);
fputs(_(" error: "), stderr);
fputs(buf, stderr);
fputs(": ", stderr);
fputs(wstrerror(error), stderr);
fputs("\n", stderr);
fflush(stderr);
fflush(stdout);
va_end(args);
}

View File

@@ -1,7 +1,7 @@
/*
* WindowMaker miscelaneous function library
* Window Maker miscelaneous function library
*
* Copyright (c) 1997 Alfredo K. Kojima
* Copyright (c) 1997-2002 Alfredo K. Kojima
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
*/
#include "../src/config.h"
#include "wconfig.h"
#include "WUtil.h"
@@ -45,7 +45,7 @@ wgethomedir()
user = getpwuid(getuid());
if (!user) {
wsyserror("could not get password entry for UID %i", getuid());
wsyserror(_("could not get password entry for UID %i"), getuid());
return "/";
}
if (!user->pw_dir) {
@@ -63,7 +63,7 @@ getuserhomedir(char *username)
user = getpwnam(username);
if (!user) {
wsyserror("could not get password entry for user %s", username);
wsyserror(_("could not get password entry for user %s"), username);
return NULL;
}
if (!user->pw_dir) {
@@ -160,6 +160,27 @@ wexpandpath(char *path)
}
/* return address of next char != tok or end of string whichever comes first */
static char*
skipchar(char *string, char tok)
{
while(*string!=0 && *string==tok)
string++;
return string;
}
/* return address of next char == tok or end of string whichever comes first */
static char*
nextchar(char *string, char tok)
{
while(*string!=0 && *string!=tok)
string++;
return string;
}
/*
*----------------------------------------------------------------------
@@ -180,22 +201,21 @@ char*
wfindfile(char *paths, char *file)
{
char *path;
char *tmp;
int done;
char *tmp, *tmp2;
int len, flen;
char *fullpath;
if (!file)
return NULL;
if (*file=='/' || *file=='~' || *file=='$' || !paths) {
if (access(file, R_OK)<0) {
if (*file=='/' || *file=='~' || *file=='$' || !paths || *paths==0) {
if (access(file, F_OK)<0) {
fullpath = wexpandpath(file);
if (!fullpath)
return NULL;
if (access(fullpath, R_OK)<0) {
free(fullpath);
if (access(fullpath, F_OK)<0) {
wfree(fullpath);
return NULL;
} else {
return fullpath;
@@ -207,26 +227,29 @@ wfindfile(char *paths, char *file)
flen = strlen(file);
tmp = paths;
done = 0;
while (!done) {
len = strcspn(tmp, ":");
if (len==0) done=1;
path = wmalloc(len+flen+2);
path = memcpy(path, tmp, len);
path[len]=0;
strcat(path, "/");
strcat(path, file);
fullpath = wexpandpath(path);
free(path);
if (fullpath) {
if (access(fullpath, R_OK)==0) {
return fullpath;
}
free(fullpath);
}
tmp=&(tmp[len+1]);
if (*tmp==0) break;
while (*tmp) {
tmp = skipchar(tmp, ':');
if (*tmp==0)
break;
tmp2 = nextchar(tmp, ':');
len = tmp2 - tmp;
path = wmalloc(len+flen+2);
path = memcpy(path, tmp, len);
path[len]=0;
if (path[len-1] != '/')
strcat(path, "/");
strcat(path, file);
fullpath = wexpandpath(path);
wfree(path);
if (fullpath) {
if (access(fullpath, F_OK)==0) {
return fullpath;
}
wfree(fullpath);
}
tmp = tmp2;
}
return NULL;
}
@@ -243,13 +266,13 @@ wfindfileinlist(char **path_list, char *file)
return NULL;
if (*file=='/' || *file=='~' || !path_list) {
if (access(file, R_OK)<0) {
if (access(file, F_OK)<0) {
fullpath = wexpandpath(file);
if (!fullpath)
return NULL;
if (access(fullpath, R_OK)<0) {
free(fullpath);
if (access(fullpath, F_OK)<0) {
wfree(fullpath);
return NULL;
} else {
return fullpath;
@@ -269,13 +292,13 @@ wfindfileinlist(char **path_list, char *file)
strcat(path, file);
/* expand tilde */
fullpath = wexpandpath(path);
free(path);
wfree(path);
if (fullpath) {
/* check if file is readable */
if (access(fullpath, R_OK)==0) {
/* check if file exists */
if (access(fullpath, F_OK)==0) {
return fullpath;
}
free(fullpath);
wfree(fullpath);
}
}
return NULL;
@@ -283,3 +306,64 @@ wfindfileinlist(char **path_list, char *file)
char*
wfindfileinarray(WMPropList *array, char *file)
{
int i;
char *path;
int len, flen;
char *fullpath;
if (!file)
return NULL;
if (*file=='/' || *file=='~' || !array) {
if (access(file, F_OK)<0) {
fullpath = wexpandpath(file);
if (!fullpath)
return NULL;
if (access(fullpath, F_OK)<0) {
wfree(fullpath);
return NULL;
} else {
return fullpath;
}
} else {
return wstrdup(file);
}
}
flen = strlen(file);
for (i=0; i<WMGetPropListItemCount(array); i++) {
WMPropList *prop;
char *p;
prop = WMGetFromPLArray(array, i);
if (!prop)
continue;
p = WMGetFromPLString(prop);
len = strlen(p);
path = wmalloc(len+flen+2);
path = memcpy(path, p, len);
path[len]=0;
strcat(path, "/");
strcat(path, file);
/* expand tilde */
fullpath = wexpandpath(path);
wfree(path);
if (fullpath) {
/* check if file exists */
if (access(fullpath, F_OK)==0) {
return fullpath;
}
wfree(fullpath);
}
}
return NULL;
}

614
WINGs/handlers.c Normal file
View File

@@ -0,0 +1,614 @@
/*
* WINGs internal handlers: timer, idle and input handlers
*/
#include "WINGsP.h"
#include "../src/config.h"
#include <sys/types.h>
#include <unistd.h>
#include <X11/Xos.h>
#ifdef HAVE_SYS_SELECT_H
# include <sys/select.h>
#endif
#include <time.h>
#ifndef X_GETTIMEOFDAY
#define X_GETTIMEOFDAY(t) gettimeofday(t, (struct timezone*)0)
#endif
typedef struct TimerHandler {
WMCallback *callback; /* procedure to call */
struct timeval when; /* when to call the callback */
void *clientData;
struct TimerHandler *next;
int nextDelay; /* 0 if it's one-shot */
} TimerHandler;
typedef struct IdleHandler {
WMCallback *callback;
void *clientData;
} IdleHandler;
typedef struct InputHandler {
WMInputProc *callback;
void *clientData;
int fd;
int mask;
} InputHandler;
/* queue of timer event handlers */
static TimerHandler *timerHandler=NULL;
static WMArray *idleHandler=NULL;
static WMArray *inputHandler=NULL;
#define timerPending() (timerHandler)
static void
rightNow(struct timeval *tv) {
X_GETTIMEOFDAY(tv);
}
/* is t1 after t2 ? */
#define IS_AFTER(t1, t2) (((t1).tv_sec > (t2).tv_sec) || \
(((t1).tv_sec == (t2).tv_sec) \
&& ((t1).tv_usec > (t2).tv_usec)))
#define IS_ZERO(tv) (tv.tv_sec == 0 && tv.tv_usec == 0)
#define SET_ZERO(tv) tv.tv_sec = 0, tv.tv_usec = 0
static void
addmillisecs(struct timeval *tv, int milliseconds)
{
tv->tv_usec += milliseconds*1000;
tv->tv_sec += tv->tv_usec/1000000;
tv->tv_usec = tv->tv_usec%1000000;
}
static void
enqueueTimerHandler(TimerHandler *handler)
{
TimerHandler *tmp;
/* insert callback in queue, sorted by time left */
if (!timerHandler || !IS_AFTER(handler->when, timerHandler->when)) {
/* first in the queue */
handler->next = timerHandler;
timerHandler = handler;
} else {
tmp = timerHandler;
while (tmp->next && IS_AFTER(handler->when, tmp->next->when)) {
tmp = tmp->next;
}
handler->next = tmp->next;
tmp->next = handler;
}
}
static void
delayUntilNextTimerEvent(struct timeval *delay)
{
struct timeval now;
TimerHandler *handler;
handler = timerHandler;
while (handler && IS_ZERO(handler->when)) handler = handler->next;
if (!handler) {
/* The return value of this function is only valid if there _are_
timers active. */
delay->tv_sec = 0;
delay->tv_usec = 0;
return;
}
rightNow(&now);
if (IS_AFTER(now, handler->when)) {
delay->tv_sec = 0;
delay->tv_usec = 0;
} else {
delay->tv_sec = handler->when.tv_sec - now.tv_sec;
delay->tv_usec = handler->when.tv_usec - now.tv_usec;
if (delay->tv_usec < 0) {
delay->tv_usec += 1000000;
delay->tv_sec--;
}
}
}
WMHandlerID
WMAddTimerHandler(int milliseconds, WMCallback *callback, void *cdata)
{
TimerHandler *handler;
handler = malloc(sizeof(TimerHandler));
if (!handler)
return NULL;
rightNow(&handler->when);
addmillisecs(&handler->when, milliseconds);
handler->callback = callback;
handler->clientData = cdata;
handler->nextDelay = 0;
enqueueTimerHandler(handler);
return handler;
}
WMHandlerID
WMAddPersistentTimerHandler(int milliseconds, WMCallback *callback, void *cdata)
{
TimerHandler *handler = WMAddTimerHandler(milliseconds, callback, cdata);
if (handler != NULL)
handler->nextDelay = milliseconds;
return handler;
}
void
WMDeleteTimerWithClientData(void *cdata)
{
TimerHandler *handler, *tmp;
if (!cdata || !timerHandler)
return;
tmp = timerHandler;
if (tmp->clientData==cdata) {
tmp->nextDelay = 0;
if (!IS_ZERO(tmp->when)) {
timerHandler = tmp->next;
wfree(tmp);
}
} else {
while (tmp->next) {
if (tmp->next->clientData==cdata) {
handler = tmp->next;
handler->nextDelay = 0;
if (IS_ZERO(handler->when))
break;
tmp->next = handler->next;
wfree(handler);
break;
}
tmp = tmp->next;
}
}
}
void
WMDeleteTimerHandler(WMHandlerID handlerID)
{
TimerHandler *tmp, *handler=(TimerHandler*)handlerID;
if (!handler || !timerHandler)
return;
tmp = timerHandler;
handler->nextDelay = 0;
if (IS_ZERO(handler->when))
return;
if (tmp==handler) {
timerHandler = handler->next;
wfree(handler);
} else {
while (tmp->next) {
if (tmp->next==handler) {
tmp->next=handler->next;
wfree(handler);
break;
}
tmp = tmp->next;
}
}
}
WMHandlerID
WMAddIdleHandler(WMCallback *callback, void *cdata)
{
IdleHandler *handler;
handler = malloc(sizeof(IdleHandler));
if (!handler)
return NULL;
handler->callback = callback;
handler->clientData = cdata;
/* add handler at end of queue */
if (!idleHandler) {
idleHandler = WMCreateArrayWithDestructor(16, wfree);
}
WMAddToArray(idleHandler, handler);
return handler;
}
void
WMDeleteIdleHandler(WMHandlerID handlerID)
{
IdleHandler *handler = (IdleHandler*)handlerID;
if (!handler || !idleHandler)
return;
WMRemoveFromArray(idleHandler, handler);
}
WMHandlerID
WMAddInputHandler(int fd, int condition, WMInputProc *proc, void *clientData)
{
InputHandler *handler;
handler = wmalloc(sizeof(InputHandler));
handler->fd = fd;
handler->mask = condition;
handler->callback = proc;
handler->clientData = clientData;
if (!inputHandler)
inputHandler = WMCreateArrayWithDestructor(16, wfree);
WMAddToArray(inputHandler, handler);
return handler;
}
void
WMDeleteInputHandler(WMHandlerID handlerID)
{
InputHandler *handler = (InputHandler*)handlerID;
if (!handler || !inputHandler)
return;
WMRemoveFromArray(inputHandler, handler);
}
Bool
W_CheckIdleHandlers(void)
{
IdleHandler *handler;
WMArray *handlerCopy;
WMArrayIterator iter;
if (!idleHandler || WMGetArrayItemCount(idleHandler)==0) {
W_FlushIdleNotificationQueue();
/* make sure an observer in queue didn't added an idle handler */
return (idleHandler!=NULL && WMGetArrayItemCount(idleHandler)>0);
}
handlerCopy = WMDuplicateArray(idleHandler);
WM_ITERATE_ARRAY(handlerCopy, handler, iter) {
/* check if the handler still exist or was removed by a callback */
if (WMGetFirstInArray(idleHandler, handler) == WANotFound)
continue;
(*handler->callback)(handler->clientData);
WMDeleteIdleHandler(handler);
}
WMFreeArray(handlerCopy);
W_FlushIdleNotificationQueue();
/* this is not necesarrily False, because one handler can re-add itself */
return (WMGetArrayItemCount(idleHandler)>0);
}
void
W_CheckTimerHandlers(void)
{
TimerHandler *handler;
struct timeval now;
if (!timerHandler) {
W_FlushASAPNotificationQueue();
return;
}
rightNow(&now);
handler = timerHandler;
while (handler && IS_AFTER(now, handler->when)) {
if (!IS_ZERO(handler->when)) {
SET_ZERO(handler->when);
(*handler->callback)(handler->clientData);
}
handler = handler->next;
}
while (timerHandler && IS_ZERO(timerHandler->when)) {
handler = timerHandler;
timerHandler = timerHandler->next;
if (handler->nextDelay > 0) {
handler->when = now;
addmillisecs(&handler->when, handler->nextDelay);
enqueueTimerHandler(handler);
} else {
wfree(handler);
}
}
W_FlushASAPNotificationQueue();
}
/*
* This functions will handle input events on all registered file descriptors.
* Input:
* - waitForInput - True if we want the function to wait until an event
* appears on a file descriptor we watch, False if we
* want the function to immediately return if there is
* no data available on the file descriptors we watch.
* - inputfd - Extra input file descriptor to watch for input.
* This is only used when called from wevent.c to watch
* on ConnectionNumber(dpy) to avoid blocking of X events
* if we wait for input from other file handlers.
* Output:
* if waitForInput is False, the function will return False if there are no
* input handlers registered, or if there is no data
* available on the registered ones, and will return True
* if there is at least one input handler that has data
* available.
* if waitForInput is True, the function will return False if there are no
* input handlers registered, else it will block until an
* event appears on one of the file descriptors it watches
* and then it will return True.
*
* If the retured value is True, the input handlers for the corresponding file
* descriptors are also called.
*
* Parametersshould be passed like this:
* - from wevent.c:
* waitForInput - apropriate value passed by the function who called us
* inputfd = ConnectionNumber(dpy)
* - from wutil.c:
* waitForInput - apropriate value passed by the function who called us
* inputfd = -1
*
*/
Bool
W_HandleInputEvents(Bool waitForInput, int inputfd)
{
#if defined(HAVE_POLL) && defined(HAVE_POLL_H) && !defined(HAVE_SELECT)
struct poll fd *fds;
InputHandler *handler;
int count, timeout, nfds, i, extrafd;
extrafd = (inputfd < 0) ? 0 : 1;
if (inputHandler)
nfds = WMGetArrayItemCount(inputHandler);
else
nfds = 0;
if (!extrafd && nfds==0) {
W_FlushASAPNotificationQueue();
return False;
}
fds = wmalloc((nfds+extrafd) * sizeof(struct pollfd));
if (extrafd) {
/* put this to the end of array to avoid using ranges from 1 to nfds+1 */
fds[nfds].fd = inputfd;
fds[nfds].events = POLLIN;
}
/* use WM_ITERATE_ARRAY() here */
for (i = 0; i<nfds; i++) {
handler = WMGetFromArray(inputHandler, i);
fds[i].fd = handler->fd;
fds[i].events = 0;
if (handler->mask & WIReadMask)
fds[i].events |= POLLIN;
if (handler->mask & WIWriteMask)
fds[i].events |= POLLOUT;
#if 0 /* FIXME */
if (handler->mask & WIExceptMask)
FD_SET(handler->fd, &eset);
#endif
}
/*
* Setup the timeout to the estimated time until the
* next timer expires.
*/
if (!waitForInput) {
timeout = 0;
} else if (timerPending()) {
struct timeval tv;
delayUntilNextTimerEvent(&tv);
timeout = tv.tv_sec * 1000 + tv.tv_usec / 1000;
} else {
timeout = -1;
}
count = poll(fds, nfds+extrafd, timeout);
if (count>0 && nfds>0) {
WMArray *handlerCopy = WMDuplicateArray(inputHandler);
int mask;
/* use WM_ITERATE_ARRAY() here */
for (i=0; i<nfds; i++) {
handler = WMGetFromArray(handlerCopy, i);
/* check if the handler still exist or was removed by a callback */
if (WMGetFirstInArray(inputHandler, handler) == WANotFound)
continue;
mask = 0;
if ((handler->mask & WIReadMask) &&
(fds[i].revents & (POLLIN|POLLRDNORM|POLLRDBAND|POLLPRI)))
mask |= WIReadMask;
if ((handler->mask & WIWriteMask) &&
(fds[i].revents & (POLLOUT | POLLWRBAND)))
mask |= WIWriteMask;
if ((handler->mask & WIExceptMask) &&
(fds[i].revents & (POLLHUP | POLLNVAL | POLLERR)))
mask |= WIExceptMask;
if (mask!=0 && handler->callback) {
(*handler->callback)(handler->fd, mask,
handler->clientData);
}
}
WMFreeArray(handlerCopy);
}
wfree(fds);
W_FlushASAPNotificationQueue();
return (count > 0);
#else
#ifdef HAVE_SELECT
struct timeval timeout;
struct timeval *timeoutPtr;
fd_set rset, wset, eset;
int maxfd, nfds, i;
int count;
InputHandler *handler;
if (inputHandler)
nfds = WMGetArrayItemCount(inputHandler);
else
nfds = 0;
if (inputfd<0 && nfds==0) {
W_FlushASAPNotificationQueue();
return False;
}
FD_ZERO(&rset);
FD_ZERO(&wset);
FD_ZERO(&eset);
if (inputfd < 0) {
maxfd = 0;
} else {
FD_SET(inputfd, &rset);
maxfd = inputfd;
}
/* use WM_ITERATE_ARRAY() here */
for (i=0; i<nfds; i++) {
handler = WMGetFromArray(inputHandler, i);
if (handler->mask & WIReadMask)
FD_SET(handler->fd, &rset);
if (handler->mask & WIWriteMask)
FD_SET(handler->fd, &wset);
if (handler->mask & WIExceptMask)
FD_SET(handler->fd, &eset);
if (maxfd < handler->fd)
maxfd = handler->fd;
}
/*
* Setup the timeout to the estimated time until the
* next timer expires.
*/
if (!waitForInput) {
SET_ZERO(timeout);
timeoutPtr = &timeout;
} else if (timerPending()) {
delayUntilNextTimerEvent(&timeout);
timeoutPtr = &timeout;
} else {
timeoutPtr = (struct timeval*)0;
}
count = select(1 + maxfd, &rset, &wset, &eset, timeoutPtr);
if (count>0 && nfds>0) {
WMArray *handlerCopy = WMDuplicateArray(inputHandler);
int mask;
/* use WM_ITERATE_ARRAY() here */
for (i=0; i<nfds; i++) {
handler = WMGetFromArray(handlerCopy, i);
/* check if the handler still exist or was removed by a callback */
if (WMGetFirstInArray(inputHandler, handler) == WANotFound)
continue;
mask = 0;
if ((handler->mask & WIReadMask) && FD_ISSET(handler->fd, &rset))
mask |= WIReadMask;
if ((handler->mask & WIWriteMask) && FD_ISSET(handler->fd, &wset))
mask |= WIWriteMask;
if ((handler->mask & WIExceptMask) && FD_ISSET(handler->fd, &eset))
mask |= WIExceptMask;
if (mask!=0 && handler->callback) {
(*handler->callback)(handler->fd, mask,
handler->clientData);
}
}
WMFreeArray(handlerCopy);
}
W_FlushASAPNotificationQueue();
/* --oldway-- return ((inputfd < 0) ? (count > 0) : FD_ISSET(inputfd, &rset));*/
return (count > 0);
#else /* not HAVE_SELECT, not HAVE_POLL */
Neither select nor poll. You lose.
#endif /* HAVE_SELECT */
#endif /* HAVE_POLL */
}

View File

@@ -21,8 +21,8 @@
typedef struct HashItem {
void *key;
void *data;
const void *key;
const void *data;
struct HashItem *next; /* collided item list */
} HashItem;
@@ -114,7 +114,7 @@ rebuildTable(WMHashTable *table)
oldArray[i] = next;
}
}
free(oldArray);
wfree(oldArray);
}
@@ -149,7 +149,7 @@ WMResetHashTable(WMHashTable *table)
while (item) {
tmp = item->next;
RELKEY(table, item);
free(item);
wfree(item);
item = tmp;
}
}
@@ -157,7 +157,7 @@ WMResetHashTable(WMHashTable *table)
table->itemCount = 0;
if (table->size > INITIAL_CAPACITY) {
free(table->table);
wfree(table->table);
table->size = INITIAL_CAPACITY;
table->table = wmalloc(sizeof(HashItem*)*table->size);
}
@@ -175,16 +175,22 @@ WMFreeHashTable(WMHashTable *table)
item = table->table[i];
while (item) {
tmp = item->next;
RELKEY(table, item);
free(item);
RELKEY(table, item->key);
wfree(item);
item = tmp;
}
}
free(table->table);
free(table);
wfree(table->table);
wfree(table);
}
unsigned
WMCountHashTable(WMHashTable *table)
{
return table->itemCount;
}
void*
WMHashGet(WMHashTable *table, const void *key)
@@ -211,15 +217,52 @@ WMHashGet(WMHashTable *table, const void *key)
}
}
if (item)
return item->data;
return (void*)item->data;
else
return NULL;
}
Bool
WMHashGetItemAndKey(WMHashTable *table, const void *key,
void **retItem, void **retKey)
{
unsigned h;
HashItem *item;
h = HASH(table, key);
item = table->table[h];
if (table->callbacks.keyIsEqual) {
while (item) {
if ((*table->callbacks.keyIsEqual)(key, item->key)) {
break;
}
item = item->next;
}
} else {
while (item) {
if (key == item->key) {
break;
}
item = item->next;
}
}
if (item) {
if (retKey)
*retKey = (void*)item->key;
if (retItem)
*retItem = (void*)item->data;
return True;
} else {
return False;
}
}
void*
WMHashInsert(WMHashTable *table, void *key, void *data)
WMHashInsert(WMHashTable *table, const void *key, const void *data)
{
unsigned h;
HashItem *item;
@@ -247,14 +290,14 @@ WMHashInsert(WMHashTable *table, void *key, void *data)
}
if (replacing) {
void *old;
const void *old;
old = item->data;
item->data = data;
RELKEY(table, item->key);
item->key = DUPKEY(table, key);
return old;
return (void*)old;
} else {
HashItem *nitem;
@@ -296,7 +339,7 @@ deleteFromList(HashTable *table, HashItem *item, const void *key)
next = item->next;
RELKEY(table, item->key);
free(item);
wfree(item);
table->itemCount--;
@@ -337,7 +380,7 @@ WMEnumerateHashTable(WMHashTable *table)
void*
WMNextHashEnumeratorItem(WMHashEnumerator *enumerator)
{
void *data = NULL;
const void *data = NULL;
/* this assumes the table doesn't change between
* WMEnumerateHashTable() and WMNextHashEnumeratorItem() calls */
@@ -357,14 +400,65 @@ WMNextHashEnumeratorItem(WMHashEnumerator *enumerator)
enumerator->nextItem = ((HashItem*)enumerator->nextItem)->next;
}
return data;
return (void*)data;
}
unsigned
WMCountHashTable(WMHashTable *table)
void*
WMNextHashEnumeratorKey(WMHashEnumerator *enumerator)
{
return table->itemCount;
const void *key = NULL;
/* this assumes the table doesn't change between
* WMEnumerateHashTable() and WMNextHashEnumeratorKey() calls */
if (enumerator->nextItem==NULL) {
HashTable *table = enumerator->table;
while (++enumerator->index < table->size) {
if (table->table[enumerator->index]!=NULL) {
enumerator->nextItem = table->table[enumerator->index];
break;
}
}
}
if (enumerator->nextItem) {
key = ((HashItem*)enumerator->nextItem)->key;
enumerator->nextItem = ((HashItem*)enumerator->nextItem)->next;
}
return (void*)key;
}
Bool
WMNextHashEnumeratorItemAndKey(WMHashEnumerator *enumerator,
void **item, void **key)
{
/* this assumes the table doesn't change between
* WMEnumerateHashTable() and WMNextHashEnumeratorItemAndKey() calls */
if (enumerator->nextItem==NULL) {
HashTable *table = enumerator->table;
while (++enumerator->index < table->size) {
if (table->table[enumerator->index]!=NULL) {
enumerator->nextItem = table->table[enumerator->index];
break;
}
}
}
if (enumerator->nextItem) {
if (item)
*item = (void*)((HashItem*)enumerator->nextItem)->data;
if (key)
*key = (void*)((HashItem*)enumerator->nextItem)->key;
enumerator->nextItem = ((HashItem*)enumerator->nextItem)->next;
return True;
}
return False;
}
@@ -392,7 +486,7 @@ const WMHashTableCallbacks WMStringHashCallbacks = {
(hashFunc)hashString,
(isEqualFunc)compareStrings,
(retainFunc)wstrdup,
(releaseFunc)free
(releaseFunc)wfree
};

310
WINGs/host.c Normal file
View File

@@ -0,0 +1,310 @@
/*
* WINGs WMHost function library
*
* Copyright (c) 1999-2002 Dan Pascu
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "wconfig.h"
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "WUtil.h"
/* For Solaris */
#ifndef INADDR_NONE
# define INADDR_NONE (-1)
#endif
/* Max hostname length (RFC 1123) */
#define W_MAXHOSTNAMELEN 255
typedef struct W_Host {
char *name;
WMArray *names;
WMArray *addresses;
int refCount;
} W_Host;
static WMHashTable *hostCache = NULL;
static Bool hostCacheEnabled = True;
static WMHost*
getHostFromCache(char *name)
{
if (!hostCache)
return NULL;
return WMHashGet(hostCache, name);
}
static WMHost*
getHostWithHostEntry(struct hostent *host, char *name)
{
WMHost *hPtr;
struct in_addr in;
int i;
hPtr = (WMHost*)wmalloc(sizeof(WMHost));
memset(hPtr, 0, sizeof(WMHost));
hPtr->names = WMCreateArrayWithDestructor(1, wfree);
hPtr->addresses = WMCreateArrayWithDestructor(1, wfree);
WMAddToArray(hPtr->names, wstrdup(host->h_name));
for (i=0; host->h_aliases[i]!=NULL; i++) {
WMAddToArray(hPtr->names, wstrdup(host->h_aliases[i]));
}
for (i=0; host->h_addr_list[i]!=NULL; i++) {
memcpy((void*)&in.s_addr, (const void*)host->h_addr_list[i],
host->h_length);
WMAddToArray(hPtr->addresses, wstrdup(inet_ntoa(in)));
}
hPtr->refCount = 1;
if (hostCacheEnabled) {
if (!hostCache)
hostCache = WMCreateHashTable(WMStringPointerHashCallbacks);
hPtr->name = wstrdup(name);
wassertr(WMHashInsert(hostCache, hPtr->name, hPtr)==NULL);
hPtr->refCount++;
}
return hPtr;
}
WMHost*
WMGetCurrentHost()
{
char name[W_MAXHOSTNAMELEN+1];
if (gethostname(name, W_MAXHOSTNAMELEN) < 0) {
wsyserror(_("Cannot get current host name"));
return NULL;
}
name[W_MAXHOSTNAMELEN] = 0;
return WMGetHostWithName(name);
}
WMHost*
WMGetHostWithName(char *name)
{
struct hostent *host;
WMHost *hPtr;
wassertrv(name!=NULL, NULL);
if (hostCacheEnabled) {
if ((hPtr = getHostFromCache(name)) != NULL) {
WMRetainHost(hPtr);
return hPtr;
}
}
host = gethostbyname(name);
if (host == NULL) {
return NULL;
}
hPtr = getHostWithHostEntry(host, name);
return hPtr;
}
WMHost*
WMGetHostWithAddress(char *address)
{
struct hostent *host;
struct in_addr in;
WMHost *hPtr;
wassertrv(address!=NULL, NULL);
if (hostCacheEnabled) {
if ((hPtr = getHostFromCache(address)) != NULL) {
WMRetainHost(hPtr);
return hPtr;
}
}
#ifndef HAVE_INET_ATON
if ((in.s_addr = inet_addr(address)) == INADDR_NONE)
return NULL;
#else
if (inet_aton(address, &in) == 0)
return NULL;
#endif
host = gethostbyaddr((char*)&in, sizeof(in), AF_INET);
if (host == NULL) {
return NULL;
}
hPtr = getHostWithHostEntry(host, address);
return hPtr;
}
WMHost*
WMRetainHost(WMHost *hPtr)
{
hPtr->refCount++;
return hPtr;
}
void
WMReleaseHost(WMHost *hPtr)
{
hPtr->refCount--;
if (hPtr->refCount > 0)
return;
WMFreeArray(hPtr->names);
WMFreeArray(hPtr->addresses);
if (hPtr->name) {
WMHashRemove(hostCache, hPtr->name);
wfree(hPtr->name);
}
wfree(hPtr);
}
void
WMSetHostCacheEnabled(Bool flag)
{
hostCacheEnabled = ((flag==0) ? 0 : 1);
}
Bool
WMIsHostCacheEnabled()
{
return hostCacheEnabled;
}
void
WMFlushHostCache()
{
if (hostCache && WMCountHashTable(hostCache)>0) {
WMArray *hostArray = WMCreateArray(WMCountHashTable(hostCache));
WMHashEnumerator enumer = WMEnumerateHashTable(hostCache);
WMHost *hPtr;
int i;
while ((hPtr = WMNextHashEnumeratorItem(&enumer))) {
/* we can't release the host here, because we can't change the
* hash while using the enumerator functions. */
WMAddToArray(hostArray, hPtr);
}
for (i=0; i<WMGetArrayItemCount(hostArray); i++)
WMReleaseHost(WMGetFromArray(hostArray, i));
WMFreeArray(hostArray);
WMResetHashTable(hostCache);
}
}
static int
matchAddress(void *item, void *cdata)
{
return (strcmp((char*) item, (char*) cdata)==0);
}
Bool
WMIsHostEqualToHost(WMHost* hPtr, WMHost* aPtr)
{
char *adr;
int i;
wassertrv(hPtr!=NULL && aPtr!=NULL, False);
if (hPtr == aPtr)
return True;
for (i=0; i<WMGetArrayItemCount(aPtr->addresses); i++) {
adr = WMGetFromArray(aPtr->addresses, i);
if (WMFindInArray(hPtr->addresses, matchAddress, adr) != WANotFound) {
return True;
}
}
return False;
}
char*
WMGetHostName(WMHost *hPtr)
{
return (WMGetArrayItemCount(hPtr->names) > 0 ?
WMGetFromArray(hPtr->names, 0) : NULL);
/*return WMGetFromArray(hPtr->names, 0);*/
}
WMArray*
WMGetHostNames(WMHost *hPtr)
{
return hPtr->names;
}
char*
WMGetHostAddress(WMHost *hPtr)
{
return (WMGetArrayItemCount(hPtr->addresses) > 0 ?
WMGetFromArray(hPtr->addresses, 0) : NULL);
}
WMArray*
WMGetHostAddresses(WMHost *hPtr)
{
return hPtr->addresses;
}

View File

@@ -1,7 +1,7 @@
/*
* WindowMaker miscelaneous function library
* Window Maker miscelaneous function library
*
* Copyright (c) 1997 Alfredo K. Kojima
* Copyright (c) 1997-2002 Alfredo K. Kojima
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -29,6 +29,11 @@
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <signal.h>
#ifdef TEST_WITH_GC
#include <gc/gc.h>
#endif
#ifndef False
# define False 0
@@ -37,7 +42,33 @@
# define True 1
#endif
extern void wAbort(int);
static void
defaultHandler(int bla)
{
if (bla)
kill(getpid(), SIGABRT);
else
exit(1);
}
static waborthandler *aborthandler = (waborthandler*)defaultHandler;
#define wAbort(a) (*aborthandler)(a)
waborthandler*
wsetabort(waborthandler *handler)
{
waborthandler *old = aborthandler;
aborthandler = handler;
return old;
}
static int Aborting=0; /* if we're in the middle of an emergency exit */
@@ -45,18 +76,29 @@ static int Aborting=0; /* if we're in the middle of an emergency exit */
static WMHashTable *table = NULL;
void *wmalloc(size_t size)
void*
wmalloc(size_t size)
{
void *tmp;
assert(size > 0);
#ifdef TEST_WITH_GC
tmp = GC_malloc(size);
#else
tmp = malloc(size);
#endif
if (tmp == NULL) {
wwarning("malloc() failed. Retrying after 2s.");
sleep(2);
tmp = malloc(size);
#ifdef TEST_WITH_GC
tmp = GC_malloc(size);
#else
tmp = malloc(size);
#endif
if (tmp == NULL) {
if (Aborting) {
puts("Real Bad Error: recursive malloc() failure.");
fputs("Really Bad Error: recursive malloc() failure.", stderr);
exit(-1);
} else {
wfatal("virtual memory exhausted");
@@ -69,18 +111,42 @@ void *wmalloc(size_t size)
}
void *wrealloc(void *ptr, size_t newsize)
void*
wrealloc(void *ptr, size_t newsize)
{
void *nptr;
if (!ptr) {
nptr = malloc(newsize);
nptr = wmalloc(newsize);
} else if (newsize==0) {
wfree(ptr);
nptr = NULL;
} else {
nptr=realloc(ptr, newsize);
}
if (nptr==NULL) {
printf("Could not do realloc");
return NULL;
#ifdef TEST_WITH_GC
nptr = GC_realloc(ptr, newsize);
#else
nptr = realloc(ptr, newsize);
#endif
if (nptr==NULL) {
wwarning("realloc() failed. Retrying after 2s.");
sleep(2);
#ifdef TEST_WITH_GC
nptr = GC_realloc(ptr, newsize);
#else
nptr = realloc(ptr, newsize);
#endif
if (nptr == NULL) {
if (Aborting) {
fputs("Really Bad Error: recursive realloc() failure.",
stderr);
exit(-1);
} else {
wfatal("virtual memory exhausted");
Aborting=1;
wAbort(False);
}
}
}
}
return nptr;
}
@@ -114,6 +180,19 @@ wretain(void *ptr)
}
void
wfree(void *ptr)
{
#ifdef TEST_WITH_GC
GC_free(ptr);
#else
free(ptr);
#endif
}
void
wrelease(void *ptr)
{
@@ -129,8 +208,8 @@ wrelease(void *ptr)
printf("RELEASING %p\n", ptr);
#endif
WMHashRemove(table, ptr);
free(refcount);
free(ptr);
wfree(refcount);
wfree(ptr);
}
#ifdef VERBOSE
else {
@@ -141,29 +220,3 @@ wrelease(void *ptr)
}
char*
wstrdup(char *str)
{
assert(str!=NULL);
return strcpy(wmalloc(strlen(str)+1), str);
}
char*
wstrappend(char *dst, char *src)
{
char *str;
if (!dst)
return wstrdup(src);
else if (!src)
return wstrdup(dst);
str = wmalloc(strlen(dst)+strlen(src)+1);
strcpy(str, dst);
strcat(str, src);
return str;
}

18
WINGs/misc.c Normal file
View File

@@ -0,0 +1,18 @@
/* Miscelaneous helper functions */
#include "WINGsP.h"
WMRange
wmkrange(int start, int count)
{
WMRange range;
range.position = start;
range.count = count;
return range;
}

View File

@@ -8,15 +8,17 @@
typedef struct W_Notification {
char *name;
const char *name;
void *object;
void *clientData;
int refCount;
} Notification;
extern void W_FlushASAPNotificationQueue();
char*
const char*
WMGetNotificationName(WMNotification *notification)
{
return notification->name;
@@ -38,7 +40,7 @@ WMGetNotificationClientData(WMNotification *notification)
WMNotification*
WMCreateNotification(char *name, void *object, void *clientData)
WMCreateNotification(const char *name, void *object, void *clientData)
{
Notification *nPtr;
@@ -60,7 +62,7 @@ WMReleaseNotification(WMNotification *notification)
notification->refCount--;
if (notification->refCount < 1) {
free(notification);
wfree(notification);
}
}
@@ -80,7 +82,7 @@ typedef struct NotificationObserver {
WMNotificationObserverAction *observerAction;
void *observer;
char *name;
const char *name;
void *object;
struct NotificationObserver *prev; /* for tables */
@@ -117,7 +119,7 @@ W_InitNotificationCenter(void)
void
WMAddNotificationObserver(WMNotificationObserverAction *observerAction,
void *observer, char *name, void *object)
void *observer, const char *name, void *object)
{
NotificationObserver *oRec, *rec;
@@ -131,7 +133,8 @@ WMAddNotificationObserver(WMNotificationObserverAction *observerAction,
/* put this action in the list of actions for this observer */
rec = WMHashInsert(notificationCenter->observerTable, observer, oRec);
rec = (NotificationObserver*)WMHashInsert(notificationCenter->observerTable,
observer, oRec);
if (rec) {
/* if this is not the first action for the observer */
@@ -149,14 +152,16 @@ WMAddNotificationObserver(WMNotificationObserverAction *observerAction,
notificationCenter->nilList = oRec;
} else if (!name) {
/* any message coming from object */
rec = WMHashInsert(notificationCenter->objectTable, object, oRec);
rec = (NotificationObserver*)WMHashInsert(notificationCenter->objectTable,
object, oRec);
oRec->next = rec;
if (rec) {
rec->prev = oRec;
}
} else {
/* name && (object || !object) */
rec = WMHashInsert(notificationCenter->nameTable, name, oRec);
rec = (NotificationObserver*)WMHashInsert(notificationCenter->nameTable,
name, oRec);
oRec->next = rec;
if (rec) {
rec->prev = oRec;
@@ -173,12 +178,14 @@ WMPostNotification(WMNotification *notification)
WMRetainNotification(notification);
/* tell the observers that want to know about a particular message */
orec = WMHashGet(notificationCenter->nameTable, notification->name);
orec = (NotificationObserver*)WMHashGet(notificationCenter->nameTable,
notification->name);
while (orec) {
tmp = orec->next;
if (!orec->object || orec->object == notification->object) {
if (!orec->object || !notification->object
|| orec->object == notification->object) {
/* tell the observer */
if (orec->observerAction) {
(*orec->observerAction)(orec->observer, notification);
@@ -189,7 +196,8 @@ WMPostNotification(WMNotification *notification)
}
/* tell the observers that want to know about an object */
orec = WMHashGet(notificationCenter->objectTable, notification->object);
orec = (NotificationObserver*)WMHashGet(notificationCenter->objectTable,
notification->object);
while (orec) {
tmp = orec->next;
@@ -217,16 +225,14 @@ WMPostNotification(WMNotification *notification)
}
void
WMRemoveNotificationObserver(void *observer)
{
NotificationObserver *orec, *tmp, *rec;
/* get the list of actions the observer is doing */
orec = WMHashGet(notificationCenter->observerTable, observer);
orec = (NotificationObserver*)WMHashGet(notificationCenter->observerTable,
observer);
/*
* FOREACH orec IN actionlist for observer
@@ -244,7 +250,8 @@ WMRemoveNotificationObserver(void *observer)
notificationCenter->nilList = orec->next;
} else if (!orec->name) {
/* any message coming from object */
rec = WMHashGet(notificationCenter->objectTable, orec->object);
rec = (NotificationObserver*)WMHashGet(notificationCenter->objectTable,
orec->object);
if (rec==orec) {
/* replace table entry */
if (orec->next) {
@@ -256,7 +263,8 @@ WMRemoveNotificationObserver(void *observer)
}
} else {
/* name && (object || !object) */
rec = WMHashGet(notificationCenter->nameTable, orec->name);
rec = (NotificationObserver*)WMHashGet(notificationCenter->nameTable,
orec->name);
if (rec==orec) {
/* replace table entry */
if (orec->next) {
@@ -272,7 +280,7 @@ WMRemoveNotificationObserver(void *observer)
if (orec->next)
orec->next->prev = orec->prev;
free(orec);
wfree(orec);
orec = tmp;
}
@@ -282,12 +290,17 @@ WMRemoveNotificationObserver(void *observer)
void
WMRemoveNotificationObserverWithName(void *observer, char *name, void *object)
WMRemoveNotificationObserverWithName(void *observer, const char *name, void *object)
{
NotificationObserver *orec, *tmp, *rec;
NotificationObserver *newList = NULL;
/* get the list of actions the observer is doing */
orec = WMHashGet(notificationCenter->observerTable, observer);
orec = (NotificationObserver*)WMHashGet(notificationCenter->observerTable, observer);
WMHashRemove(notificationCenter->observerTable, observer);
/* rebuild the list of actions for the observer */
while (orec) {
tmp = orec->nextAction;
@@ -296,57 +309,66 @@ WMRemoveNotificationObserverWithName(void *observer, char *name, void *object)
if (notificationCenter->nilList == orec)
notificationCenter->nilList = orec->next;
} else if (!name) {
rec = WMHashGet(notificationCenter->objectTable, orec->object);
rec = (NotificationObserver*)WMHashGet(notificationCenter->objectTable, orec->object);
if (rec==orec) {
assert(rec->prev==NULL);
/* replace table entry */
if (orec->next) {
WMHashInsert(notificationCenter->objectTable, orec->object,
orec->next);
WMHashInsert(notificationCenter->objectTable,
orec->object, orec->next);
} else {
WMHashRemove(notificationCenter->objectTable,
orec->object);
}
}
} else {
rec = WMHashGet(notificationCenter->nameTable, orec->name);
rec = (NotificationObserver*)WMHashGet(notificationCenter->nameTable,
orec->name);
if (rec==orec) {
assert(rec->prev==NULL);
/* replace table entry */
if (orec->next) {
WMHashInsert(notificationCenter->nameTable, orec->name,
orec->next);
WMHashInsert(notificationCenter->nameTable,
orec->name, orec->next);
} else {
WMHashRemove(notificationCenter->nameTable, orec->name);
WMHashRemove(notificationCenter->nameTable,
orec->name);
}
}
}
/* update the action list for the observer */
rec = WMHashGet(notificationCenter->observerTable, observer);
if (rec == orec) {
if (orec->nextAction) {
WMHashInsert(notificationCenter->nameTable, observer,
orec->nextAction);
} else {
WMHashRemove(notificationCenter->nameTable, observer);
}
}
if (orec->prev)
orec->prev->next = orec->next;
if (orec->next)
orec->next->prev = orec->prev;
free(orec);
wfree(orec);
} else {
/* append this action in the new action list */
orec->nextAction = NULL;
if (!newList) {
newList = orec;
} else {
NotificationObserver *p;
p = newList;
while (p->nextAction) {
p = p->nextAction;
}
p->nextAction = orec;
}
}
orec = tmp;
}
/* reinsert the list to the table */
if (newList) {
WMHashInsert(notificationCenter->observerTable, observer, newList);
}
}
void
WMPostNotificationName(char *name, void *object, void *clientData)
WMPostNotificationName(const char *name, void *object, void *clientData)
{
WMNotification *notification;
@@ -363,18 +385,25 @@ WMPostNotificationName(char *name, void *object, void *clientData)
typedef struct W_NotificationQueue {
NotificationCenter *center;
void *asapQueue;
void *idleQueue;
WMArray *asapQueue;
WMArray *idleQueue;
struct W_NotificationQueue *next;
} NotificationQueue;
static WMNotificationQueue *notificationQueueList = NULL;
/* default queue */
static WMNotificationQueue *notificationQueue = NULL;
WMNotificationQueue*
WMGetDefaultNotificationQueue(void)
{
if (!notificationQueue)
notificationQueue = WMCreateNotificationQueue();
return notificationQueue;
}
@@ -382,20 +411,76 @@ WMGetDefaultNotificationQueue(void)
WMNotificationQueue*
WMCreateNotificationQueue(void)
{
return NULL;
NotificationQueue *queue;
queue = wmalloc(sizeof(NotificationQueue));
queue->asapQueue =
WMCreateArrayWithDestructor(8, (WMFreeDataProc*)WMReleaseNotification);
queue->idleQueue =
WMCreateArrayWithDestructor(8, (WMFreeDataProc*)WMReleaseNotification);
queue->next = notificationQueueList;
notificationQueueList = queue;
return queue;
}
void
WMDequeueNotificationMatching(WMNotificationQueue *queue, unsigned mask)
{
}
void
WMEnqueueNotification(WMNotificationQueue *queue, WMNotification *notification,
WMPostingStyle postingStyle)
{
WMEnqueueCoalesceNotification(queue, notification, postingStyle,
WNCOnName|WNCOnSender);
}
#define NOTIF ((WMNotification*)cdata)
#define ITEM ((WMNotification*)item)
static int
matchSenderAndName(void *item, void *cdata)
{
return (NOTIF->object==ITEM->object && strcmp(NOTIF->name, ITEM->name)==0);
}
static int
matchSender(void *item, void *cdata)
{
return (NOTIF->object == ITEM->object);
}
static int
matchName(void *item, void *cdata)
{
return (strcmp(NOTIF->name, ITEM->name)==0);
}
#undef NOTIF
#undef ITEM
void
WMDequeueNotificationMatching(WMNotificationQueue *queue,
WMNotification *notification, unsigned mask)
{
WMMatchDataProc *matchFunc;
if ((mask & WNCOnName) && (mask & WNCOnSender))
matchFunc = matchSenderAndName;
else if (mask & WNCOnName)
matchFunc = matchName;
else if (mask & WNCOnSender)
matchFunc = matchSender;
else
return;
WMRemoveFromArrayMatching(queue->asapQueue, matchFunc, notification);
WMRemoveFromArrayMatching(queue->idleQueue, matchFunc, notification);
}
@@ -405,10 +490,54 @@ WMEnqueueCoalesceNotification(WMNotificationQueue *queue,
WMPostingStyle postingStyle,
unsigned coalesceMask)
{
if (coalesceMask != WNCNone)
WMDequeueNotificationMatching(queue, notification, coalesceMask);
switch (postingStyle) {
case WMPostNow:
WMPostNotification(notification);
WMReleaseNotification(notification);
break;
case WMPostASAP:
WMAddToArray(queue->asapQueue, notification);
break;
case WMPostWhenIdle:
WMAddToArray(queue->idleQueue, notification);
break;
}
}
void
W_FlushASAPNotificationQueue()
{
WMNotificationQueue *queue = notificationQueueList;
while (queue) {
while (WMGetArrayItemCount(queue->asapQueue)) {
WMPostNotification(WMGetFromArray(queue->asapQueue, 0));
WMDeleteFromArray(queue->asapQueue, 0);
}
queue = queue->next;
}
}
void
W_FlushIdleNotificationQueue()
{
WMNotificationQueue *queue = notificationQueueList;
while (queue) {
while (WMGetArrayItemCount(queue->idleQueue)) {
WMPostNotification(WMGetFromArray(queue->idleQueue, 0));
WMDeleteFromArray(queue->idleQueue, 0);
}
queue = queue->next;
}
}

4
WINGs/po/.cvsignore Normal file
View File

@@ -0,0 +1,4 @@
Makefile Makefile.in
.psrc .inslog2 tca.map tca.log
*.rpt
*.pot

50
WINGs/po/Makefile.am Normal file
View File

@@ -0,0 +1,50 @@
nlsdir = $(NLSDIR)
CATALOGS = @WINGSMOFILES@
CLEANFILES = $(CATALOGS) WINGs.pot
EXTRA_DIST = cs.po de.po sk.po fr.po
POTFILES = \
$(top_builddir)/WINGs/connection.c \
$(top_builddir)/WINGs/error.c \
$(top_builddir)/WINGs/findfile.c \
$(top_builddir)/WINGs/host.c \
$(top_builddir)/WINGs/proplist.c \
$(top_builddir)/WINGs/userdefaults.c \
$(top_builddir)/WINGs/wcolor.c \
$(top_builddir)/WINGs/wcolorpanel.c \
$(top_builddir)/WINGs/wfilepanel.c \
$(top_builddir)/WINGs/wfont.c \
$(top_builddir)/WINGs/wfontpanel.c \
$(top_builddir)/WINGs/widgets.c \
$(top_builddir)/WINGs/wruler.c
SUFFIXES = .po .mo
.po.mo:
msgfmt -o $@ $<
WINGs.pot: $(POTFILES)
xgettext --default-domain=WINGs \
--add-comments --keyword=_ $(POTFILES)
if cmp -s WINGs.po WINGs.pot; then \
rm -f WINGs.po; \
else \
mv -f WINGs.po WINGs.pot; \
fi
install-data-local: $(CATALOGS)
$(mkinstalldirs) $(DESTDIR)$(nlsdir)
chmod 755 $(DESTDIR)$(nlsdir)
for n in $(CATALOGS) __DuMmY ; do \
if test "$$n" -a "$$n" != "__DuMmY" ; then \
l=`basename $$n .mo`; \
$(mkinstalldirs) $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \
chmod 755 $(DESTDIR)$(nlsdir)/$$l; \
chmod 755 $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \
$(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES/WINGs.mo; \
fi; \
done

15
WINGs/po/README Normal file
View File

@@ -0,0 +1,15 @@
Instructions for translating po files can be found in the po/README directory
in the top of the WindowMaker source tree.
File Language Note Current Maintainer
------------------------------------------------------------------------------
cs.po Czech 1 Jiri Hnidek <Jiri.Hnidek@vslib.cz
de.po German 1 Guido Scholz <guido.scholz@bayernline.de>
sk.po Slovak 1 Jan 'judas' Tomka <judas@linux.sk>
fr.po French Emmanuel Benoit <tseeker@neptune.fr>
Notes
-----
1. Uses iso8859-2 character set.

663
WINGs/po/cs.po Normal file
View File

@@ -0,0 +1,663 @@
# Czech messages for WINGs
# (C) 2001 Jiøí Hnídek
# Special thanks to Jan "judas" Tomka
#
# Original translation by Jiøí Hnídek on Oct 11 2001
# Currently maintained by Jiøí Hnídek <jiri.hnidek@vslib.cz>
#
msgid ""
msgstr ""
"Project-Id-Version: WINGs 0.70.0\n"
"POT-Creation-Date: 2001-10-11 19:10+0100\n"
"PO-Revision-Date: 2001-10-11 22:00+0100\n"
"Last-Translator: Jiøí Hnídek <jiri.hnidek@vslib.cz>\n"
"Language-Team: Czech <cz@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: unknown\n"
#: ../../WINGs/connection.c:451 ../../WINGs/connection.c:516
#: ../../WINGs/connection.c:559
msgid "Bad address-service-protocol combination"
msgstr "Nesprávná kombinace adresa-slu¾ba-protokol"
#: ../../WINGs/dragsource.c:541
msgid "DND selection lost during drag operation..."
msgstr "DND výbìr se ztratil bìhem opere táhnutí..."
#: ../../WINGs/dragsource.c:610
#, c-format
msgid "drag & drop timed out while waiting for response from 0x%x\n"
msgstr "èas pro drag & drop vypr¹el bìhem èekání na odpoveï z 0x%x\n"
#: ../../WINGs/dragsource.c:728
msgid "could not get ownership or DND selection"
msgstr "nemo¾né získat vlastnictví nebo DND výbìr"
#: ../../WINGs/dragsource.c:898
#, c-format
msgid "drag source received unexpected XdndFinished message from %x"
msgstr "zdroj tahání pøijal neoèekávanou zprávu XdndFinished z %x"
#: ../../WINGs/dragsource.c:1040
#, c-format
msgid "unknown XDND action %s from 0x%x"
msgstr "neznámá XDND akce %s z 0x%x"
#: ../../WINGs/dragsource.c:1073
msgid "received invalid drag & drop type list"
msgstr "pøijatý nesprávný seznam typù drag & drop"
#: ../../WINGs/dragsource.c:1161
msgid "received Enter event in bad order"
msgstr "pøijatá událost Enter v nesprávném poøadí"
#: ../../WINGs/dragsource.c:1168
#, c-format
msgid "received drag & drop request with unsupported version %i"
msgstr "pøijatý po¾adavek drag & drop s nepodporovanou verzí %i"
#: ../../WINGs/error.c:56
#, c-format
msgid "Unknown error %d"
msgstr "Neznámá chyba %d"
#: ../../WINGs/error.c:61
#, c-format
msgid "Error %d"
msgstr "Chyba %d"
#: ../../WINGs/error.c:112
msgid " warning: "
msgstr " varovíní: "
#: ../../WINGs/error.c:139
msgid " fatal error: "
msgstr " fatální chyba: "
#: ../../WINGs/error.c:165 ../../WINGs/error.c:194
msgid " error: "
msgstr " chyba: "
#: ../../WINGs/findfile.c:50
#, c-format
msgid "could not get password entry for UID %i"
msgstr "nemo¾né zjistit informaci o UID %i"
#: ../../WINGs/findfile.c:68
#, c-format
msgid "could not get password entry for user %s"
msgstr "nemo¾né zjistit informaci o u¾ivatelovi %s"
#: ../../WINGs/hashtable.c:275
msgid "rebuilding hash table...\n"
msgstr "pøepis tabulky hashovských funkcí...\n"
#: ../../WINGs/hashtable.c:279
msgid "finished rebuild.\n"
msgstr "konec pøepisu.\n"
#: ../../WINGs/host.c:116
msgid "Cannot get current host name"
msgstr "Nemo¾né zjistit aktuální jméno poèítaèe"
#: ../../WINGs/memory.c:94
msgid "malloc() failed. Retrying after 2s."
msgstr "chyba malloc(). Nový pokus o 2s."
#: ../../WINGs/memory.c:103
msgid "Really Bad Error: recursive malloc() failure."
msgstr "Skuteènì o¹klivá chyba: rekurzivní chyba malloc()."
#: ../../WINGs/memory.c:106 ../../WINGs/memory.c:146
msgid "virtual memory exhausted"
msgstr "virtuální pamì» vyèerpaná"
#: ../../WINGs/memory.c:133
msgid "realloc() failed. Retrying after 2s."
msgstr "chyba realloc(). Nový pokus o 2s."
#: ../../WINGs/memory.c:142
msgid "Really Bad Error: recursive realloc() failure."
msgstr "Skuteènì o¹klivá chyba: rekurzivní chyba realloc()."
#: ../../WINGs/memory.c:205
#, c-format
msgid "trying to release unexisting data %p"
msgstr "pokus uvolnit neexistujícá data %p"
#: ../../WINGs/memory.c:210
#, c-format
msgid "RELEASING %p\n"
msgstr "UVOLNÌNÍ %p\n"
#: ../../WINGs/wcolor.c:198 ../../WINGs/wcolor.c:211 ../../WINGs/wcolor.c:250
#: ../../WINGs/wcolor.c:291
#, c-format
msgid "could not allocate %s color"
msgstr "nemo¾né alokovat %s barvu"
#: ../../WINGs/wcolor.c:198
msgid "white"
msgstr "bílou"
#: ../../WINGs/wcolor.c:211
msgid "black"
msgstr "èernou"
#: ../../WINGs/wcolor.c:250
msgid "gray"
msgstr "¹edou"
#: ../../WINGs/wcolor.c:291
msgid "dark gray"
msgstr "tmavì ¹edou"
#: ../../WINGs/wcolorpanel.c:410
msgid "Colors"
msgstr "Barvy"
#: ../../WINGs/wcolorpanel.c:600 ../../WINGs/wcolorpanel.c:2819
msgid "Brightness"
msgstr "Svìtlost"
#: ../../WINGs/wcolorpanel.c:602 ../../WINGs/wcolorpanel.c:678
#: ../../WINGs/wcolorpanel.c:711 ../../WINGs/wcolorpanel.c:745
#: ../../WINGs/wcolorpanel.c:805 ../../WINGs/wcolorpanel.c:839
#: ../../WINGs/wcolorpanel.c:873 ../../WINGs/wcolorpanel.c:908
#: ../../WINGs/wcolorpanel.c:2159 ../../WINGs/wcolorpanel.c:2821
#: ../../WINGs/wcolorpanel.c:2857 ../../WINGs/wcolorpanel.c:2893
#: ../../WINGs/wcolorpanel.c:3741
msgid "Color Panel: Could not allocate memory"
msgstr "Panel barev: Nemo¾né alokovat pamì»"
#: ../../WINGs/wcolorpanel.c:675 ../../WINGs/wcolorpanel.c:676
msgid "Red"
msgstr "Èervená"
#: ../../WINGs/wcolorpanel.c:708 ../../WINGs/wcolorpanel.c:709
msgid "Green"
msgstr "Zelená"
#: ../../WINGs/wcolorpanel.c:742 ../../WINGs/wcolorpanel.c:743
msgid "Blue"
msgstr "Modrá"
#: ../../WINGs/wcolorpanel.c:802 ../../WINGs/wcolorpanel.c:803
msgid "Cyan"
msgstr ""
#: ../../WINGs/wcolorpanel.c:836 ../../WINGs/wcolorpanel.c:837
msgid "Magenta"
msgstr ""
#: ../../WINGs/wcolorpanel.c:870 ../../WINGs/wcolorpanel.c:871
msgid "Yellow"
msgstr "®lutá"
#: ../../WINGs/wcolorpanel.c:905 ../../WINGs/wcolorpanel.c:906
msgid "Black"
msgstr "Èerná"
#: ../../WINGs/wcolorpanel.c:986
msgid "Spectrum"
msgstr "Spektrum"
#: ../../WINGs/wcolorpanel.c:1016
msgid "Palette"
msgstr "Paleta"
#: ../../WINGs/wcolorpanel.c:1022
msgid "New from File..."
msgstr "Nová ze souboru..."
#: ../../WINGs/wcolorpanel.c:1023 ../../WINGs/wcolorpanel.c:1071
#: ../../WINGs/wcolorpanel.c:1088
msgid "Rename..."
msgstr "Pøejmenovat..."
#: ../../WINGs/wcolorpanel.c:1024 ../../WINGs/wcolorpanel.c:1072
#: ../../WINGs/wcolorpanel.c:1089 ../../WINGs/wcolorpanel.c:3316
msgid "Remove"
msgstr "Odstranit"
#: ../../WINGs/wcolorpanel.c:1025
msgid "Copy"
msgstr "Kopírovat"
#: ../../WINGs/wcolorpanel.c:1026
msgid "New from Clipboard"
msgstr "Nová ze schránky"
#: ../../WINGs/wcolorpanel.c:1047
msgid "X11-Colors"
msgstr "Barvy X11"
#: ../../WINGs/wcolorpanel.c:1064
msgid "Color"
msgstr "Barva"
#: ../../WINGs/wcolorpanel.c:1070
msgid "Add..."
msgstr "Pøidat..."
#: ../../WINGs/wcolorpanel.c:1080
msgid "List"
msgstr "Seznam"
#: ../../WINGs/wcolorpanel.c:1087
msgid "New..."
msgstr "Nový..."
#: ../../WINGs/wcolorpanel.c:1226
#, c-format
msgid ""
"Color Panel: Could not create directory %s needed to store configurations"
msgstr ""
"Panel barev: Nemo¾né vytvoøit adresáø %s potøebný k ulo¾ení nastavení"
#. Delete the file, it doesn't belong here
#: ../../WINGs/wcolorpanel.c:1232 ../../WINGs/wcolorpanel.c:3202
#: ../../WINGs/wcolorpanel.c:3206
msgid "File Error"
msgstr "Chyba souboru"
#: ../../WINGs/wcolorpanel.c:1233
msgid "Could not create ColorPanel configuration directory"
msgstr "Nemo¾né vytvoøit konfiguraèní adresáø panelu barev"
#: ../../WINGs/wcolorpanel.c:1234 ../../WINGs/wcolorpanel.c:3203
#: ../../WINGs/wcolorpanel.c:3208 ../../WINGs/wcolorpanel.c:3235
#: ../../WINGs/wfilepanel.c:243 ../../WINGs/wfilepanel.c:641
#: ../../WINGs/wfilepanel.c:653 ../../WINGs/wfilepanel.c:752
#: ../../WINGs/wfilepanel.c:963 ../../WINGs/wfontpanel.c:717
msgid "OK"
msgstr "OK"
#: ../../WINGs/wcolorpanel.c:1240 ../../WINGs/wcolorpanel.c:1276
#: ../../WINGs/wcolorpanel.c:1294
msgid "Color Panel: Could not find file"
msgstr "Panel barev: Nemo¾né nalézt soubor"
#: ../../WINGs/wcolorpanel.c:1481 ../../WINGs/wcolorpanel.c:1546
#: ../../WINGs/wcolorpanel.c:1610
msgid "Color Panel: X failed request"
msgstr "Panel barev: chyba po¾adavku X"
#: ../../WINGs/wcolorpanel.c:2855
msgid "Saturation"
msgstr "Saturace"
#: ../../WINGs/wcolorpanel.c:2891
msgid "Hue"
msgstr "Odteï"
#: ../../WINGs/wcolorpanel.c:3141
msgid "Open Palette"
msgstr "Otevøít paletu"
#: ../../WINGs/wcolorpanel.c:3203
msgid "Invalid file format !"
msgstr "Nesprávný souborový formát!"
#: ../../WINGs/wcolorpanel.c:3205
#, c-format
msgid "can't remove file %s"
msgstr "nemo¾né odstranit soubor %s"
#: ../../WINGs/wcolorpanel.c:3207
msgid "Couldn't remove file from Configuration Directory !"
msgstr "Nemo¾né odstranit soubor z konfiguraèního adresáøe!"
#: ../../WINGs/wcolorpanel.c:3234
msgid "Rename"
msgstr "Pøejmenovat"
#: ../../WINGs/wcolorpanel.c:3234
msgid "Rename palette to:"
msgstr "Pøejmenovat paletu:"
#: ../../WINGs/wcolorpanel.c:3235 ../../WINGs/wfilepanel.c:252
#: ../../WINGs/wfilepanel.c:653 ../../WINGs/wfilepanel.c:752
msgid "Cancel"
msgstr "Zru¹it"
#. Careful, this palette exists already
#: ../../WINGs/wcolorpanel.c:3251 ../../WINGs/wfilepanel.c:752
msgid "Warning"
msgstr "Varování"
#: ../../WINGs/wcolorpanel.c:3252
msgid ""
"Palette already exists !\n"
"\n"
"Overwrite ?"
msgstr ""
"Paleta u¾ existuje!\n"
"\n"
"Pøepsat?"
#: ../../WINGs/wcolorpanel.c:3252 ../../WINGs/wcolorpanel.c:3316
msgid "No"
msgstr "Ne"
#: ../../WINGs/wcolorpanel.c:3252 ../../WINGs/wcolorpanel.c:3316
msgid "Yes"
msgstr "Ano"
#: ../../WINGs/wcolorpanel.c:3284
#, c-format
msgid "Couldn't rename palette %s to %s\n"
msgstr "Nemo¾né pøejmenovat paletu %s na %s\n"
#: ../../WINGs/wcolorpanel.c:3310
msgid "This will permanently remove the palette "
msgstr "Paleta bude natrvalo smazaná"
#: ../../WINGs/wcolorpanel.c:3313
msgid ""
".\n"
"\n"
"Are you sure you want to remove this palette ?"
msgstr ""
".\n"
"\n"
"Jste si jisti, ¾e chcete odstranit tuto paletu?"
#: ../../WINGs/wcolorpanel.c:3338
#, c-format
msgid "Couldn't remove palette %s\n"
msgstr "Nemo¾né odstranit paletu %s\n"
#: ../../WINGs/wcolorpanel.c:3643
#, c-format
msgid "Could not open %s"
msgstr "Nemo¾né otevøít %s"
#: ../../WINGs/wcolorpanel.c:3650
#, c-format
msgid "Could not create %s"
msgstr "Nemo¾né vytvoøit %s"
#: ../../WINGs/wcolorpanel.c:3661
#, c-format
msgid "Write error on file %s"
msgstr "Chyba pøi zápisu do souboru %s"
#: ../../WINGs/wcolorpanel.c:3706
msgid "Color Panel: Color unspecified"
msgstr "Panel barev: Nespecifikovaná barva"
#: ../../WINGs/wfilepanel.c:228
msgid "Name:"
msgstr "Jméno:"
#: ../../WINGs/wfilepanel.c:325 ../../WINGs/wfilepanel.c:390
msgid "Open"
msgstr "Otevøít"
#: ../../WINGs/wfilepanel.c:343 ../../WINGs/wfilepanel.c:396
msgid "Save"
msgstr "Ulo¾it"
#: ../../WINGs/wfilepanel.c:556
#, c-format
msgid "WINGs: could not open directory %s\n"
msgstr "WINGs: nemo¾né otevøít adresáø %s\n"
#: ../../WINGs/wfilepanel.c:574
#, c-format
msgid "WINGs: could not stat %s\n"
msgstr "WINGs: nemo¾né zjistit informace o %s\n"
#: ../../WINGs/wfilepanel.c:641 ../../WINGs/wfilepanel.c:962
#: ../../WINGs/wfontpanel.c:716
msgid "Error"
msgstr "Chyba"
#: ../../WINGs/wfilepanel.c:652
msgid "Create Directory"
msgstr "Vytvoøit adresáø"
#: ../../WINGs/wfilepanel.c:653
msgid "Enter directory name"
msgstr "Jméno adresáøe"
#: ../../WINGs/wfilepanel.c:689 ../../WINGs/wfilepanel.c:728
#: ../../WINGs/wfilepanel.c:757 ../../WINGs/wfilepanel.c:785
msgid "Permission denied."
msgstr "Pøístup odmítnut."
#: ../../WINGs/wfilepanel.c:692
#, c-format
msgid "'%s' already exists."
msgstr "'%s' u¾ existuje"
#: ../../WINGs/wfilepanel.c:695
msgid "Path does not exist."
msgstr "Cesta neexistuje."
#: ../../WINGs/wfilepanel.c:725 ../../WINGs/wfilepanel.c:782
#, c-format
msgid "'%s' does not exist."
msgstr "'%s' neexistuje."
#: ../../WINGs/wfilepanel.c:732 ../../WINGs/wfilepanel.c:789
msgid "Insufficient memory available."
msgstr "Nedostatek pamìti."
#: ../../WINGs/wfilepanel.c:736 ../../WINGs/wfilepanel.c:793
#, c-format
msgid "'%s' is on a read-only filesystem."
msgstr "'%s' je na souborovém systému jen pro ètení."
#: ../../WINGs/wfilepanel.c:739 ../../WINGs/wfilepanel.c:769
#: ../../WINGs/wfilepanel.c:796
#, c-format
msgid "Can not delete '%s'."
msgstr "Nemo¾né odstranit '%s'."
#: ../../WINGs/wfilepanel.c:745
#, c-format
msgid "Delete directory %s ?"
msgstr "Odstranit adresáø %s?"
#: ../../WINGs/wfilepanel.c:748
#, c-format
msgid "Delete file %s ?"
msgstr "Odstranit soubor %s?"
#: ../../WINGs/wfilepanel.c:760
#, c-format
msgid "Directory '%s' does not exist."
msgstr "Adresáø '%s' neexistuje."
#: ../../WINGs/wfilepanel.c:763
#, c-format
msgid "Directory '%s' is not empty."
msgstr "Adresáø '%s' není prázdný."
#: ../../WINGs/wfilepanel.c:766
#, c-format
msgid "Directory '%s' is busy."
msgstr "Adresáø '%s' je pou¾ívaný."
#: ../../WINGs/wfilepanel.c:779
#, c-format
msgid "'%s' is a directory."
msgstr "'%s' je adresáø."
#: ../../WINGs/wfilepanel.c:821
#, c-format
msgid "An error occured browsing '%s'."
msgstr "Pøi prohlí¾ení '%s' nastala chyba."
#: ../../WINGs/wfilepanel.c:825
#, c-format
msgid "'%s' is not a directory."
msgstr "'%s' není adresáø."
#: ../../WINGs/wfilepanel.c:962
msgid "File does not exist."
msgstr "Soubor neexistuje."
#: ../../WINGs/wfont.c:129
#, c-format
msgid "the following character sets are missing in %s:"
msgstr "nasledující sady znakù chybí v %s:"
#: ../../WINGs/wfont.c:136
#, c-format
msgid ""
"the string \"%s\" will be used in place of any characters from those sets."
msgstr ""
"øetìzec \"%s\" bude pou¾itý namísto znakù z tìchto sad."
#: ../../WINGs/wfont.c:282 ../../WINGs/wfont.c:318
#, c-format
msgid "could not load font set %s. Trying fixed."
msgstr "nemo¾né naèíst font %s. Zkou¹í se naèíst fixed."
#: ../../WINGs/wfont.c:288 ../../WINGs/wfont.c:324
#, c-format
msgid "could not load font %s. Trying fixed."
msgstr "nemo¾no naèíst font %s. Zko¹í se naèíst fixed."
#: ../../WINGs/wfont.c:292 ../../WINGs/wfont.c:328
msgid "could not load fixed font!"
msgstr "nemo¾né naèíst font fixed!"
#: ../../WINGs/wfont.c:423
#, c-format
msgid "font description %s is too large."
msgstr "popis fontu %s je pøíli¹ velký."
#: ../../WINGs/wfontpanel.c:205
msgid "Test!!!"
msgstr "Zkou¹ka!!!"
#: ../../WINGs/wfontpanel.c:211
msgid "Family"
msgstr ""
#: ../../WINGs/wfontpanel.c:222
msgid "Typeface"
msgstr ""
#: ../../WINGs/wfontpanel.c:233
msgid "Size"
msgstr "Velikost"
#: ../../WINGs/wfontpanel.c:252
msgid "Set"
msgstr "Sada"
#: ../../WINGs/wfontpanel.c:257
msgid "Revert"
msgstr "Zpìt"
#: ../../WINGs/wfontpanel.c:717
msgid "Could not retrieve font list"
msgstr "Nemo¾né obdr¾et seznam fontù"
#: ../../WINGs/wfontpanel.c:729
#, c-format
msgid "font name %s is longer than 256, which is invalid."
msgstr "jméno fontu %s je del¹í ne¾ 256, co¾ je ¹patnì."
#: ../../WINGs/wfontpanel.c:880
msgid "Roman"
msgstr ""
#: ../../WINGs/wfontpanel.c:883
msgid "Italic"
msgstr ""
#: ../../WINGs/wfontpanel.c:885
msgid "Oblique"
msgstr ""
#: ../../WINGs/wfontpanel.c:887
msgid "Rev Italic"
msgstr ""
#: ../../WINGs/wfontpanel.c:889
msgid "Rev Oblique"
msgstr ""
#: ../../WINGs/wfontpanel.c:895
msgid "Normal"
msgstr "Normílní"
#: ../../WINGs/widgets.c:414
#, c-format
msgid "WINGs: could not load widget images file: %s"
msgstr "WINGs: nemo¾né naèíst soubor s obrázky pro widgety: %s"
#: ../../WINGs/widgets.c:525
#, c-format
msgid "WINGs: could not open display %s"
msgstr "WINGs: nemo¾né otevøít display %s"
#: ../../WINGs/widgets.c:717
msgid ""
"could not load any fonts. Make sure your font installationand locale "
"settings are correct."
msgstr ""
"nemo¾né naèíst ¾ádný font. Ubezpeète se, ¾e instalace fontù a místního "
"nastavení jsou v poøádku."
#: ../../WINGs/wruler.c:189
msgid "0 inches"
msgstr "0 palcù"
#: ../../WINGs/wtext.c:1212
msgid "...for this app will surely crash :-)\n"
msgstr "...pro tuto aplikaci to urèitì spadne :-)\n"
#: ../../WINGs/wtext.c:2084
msgid "didn't get it\n"
msgstr "nedosa¾eno\n"
#: ../../WINGs/wtext.c:2726
#, c-format
msgid "type is [%s]\n"
msgstr "typ je [%s]\n"
#: ../../WINGs/wtext.c:2797
msgid "could not request data for dropped data"
msgstr "nemohou být vy¾ádána data pro polo¾ená data"
#: ../../WINGs/wtext.c:2995
msgid "could not create text's view\n"
msgstr "nemo¾né zobrazit text\n"
#: ../../WINGs/wview.c:219
msgid "trying to realize widget of unrealized parent"
msgstr "snaha vytvoøit widget neexistujícího rodièe objektu"
#: ../../WINGs/wview.c:267
msgid "trying to reparent realized view to unrealized parent"
msgstr ""
#: ../../WINGs/wtextfield.c:490
msgid "only left alignment is supported in textfields"
msgstr "pro textové pole je povolené jen levé zarovnání"
#pozor, co je STRING?
#: ../../WINGs/wwindow.c:222
msgid "window title conversion error... using STRING encoding"
msgstr "chyba konverze titulku okna... pou¾ije se kódovaní STRING"
#: ../../WINGs/wwindow.c:313
msgid "could not allocate memory for window size hints"
msgstr "nemo¾né alokovat pamì» pro pokyny velikosti okna"
#: ../../WINGs/wwindow.c:586
msgid "could not allocate memory for WM hints"
msgstr "nemo¾né alokovat pamì» pro pokyny WM"
#: ../../WINGs/wwindow.c:627
msgid "icon title conversion error..using STRING encoding"
msgstr "chyba konverze titulku ikony... pou¾ije se kódovaní STRING"

664
WINGs/po/de.po Normal file
View File

@@ -0,0 +1,664 @@
# KTranslator Generated File
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: WINGs 0.80.0\n"
"POT-Creation-Date: 2002-01-09 21:06+0100\n"
"PO-Revision-Date: 2002-01-09 21:20+0100\n"
"Last-Translator: Guido Scholz <guido.scholz@bayernline.de>\n"
"Language-Team: Deutsch <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: unknown\n"
#: ../../WINGs/connection.c:461 ../../WINGs/connection.c:526
#: ../../WINGs/connection.c:569
msgid "Bad address-service-protocol combination"
msgstr "Ungültige Adress-Dienst-Protokoll Kombination"
#: ../../WINGs/error.c:54
#, c-format
msgid "Unknown error %d"
msgstr "Unbekannter Fehler %d"
#: ../../WINGs/error.c:59
#, c-format
msgid "Error %d"
msgstr "Fehler %d"
#: ../../WINGs/error.c:110
msgid " warning: "
msgstr " Warnung: "
#: ../../WINGs/error.c:137
msgid " fatal error: "
msgstr " fataler Fehler: "
#: ../../WINGs/error.c:163 ../../WINGs/error.c:192
msgid " error: "
msgstr " Fehler: "
#: ../../WINGs/findfile.c:48
#, c-format
msgid "could not get password entry for UID %i"
msgstr "konnte Passwort nicht ermitteln für UID %i"
#: ../../WINGs/findfile.c:66
#, c-format
msgid "could not get password entry for user %s"
msgstr "konnte Passwort nicht ermitteln für Benutzer %s"
#: ../../WINGs/host.c:114
msgid "Cannot get current host name"
msgstr "Kann aktuellen Hostnamen nicht ermitteln"
#: ../../WINGs/proplist.c:150
msgid "Only string or data is supported for a proplist dictionary key"
msgstr ""
"Nur string oder data wird als Schlüssel für ein proplist dictionary "
"unterstützt"
#: ../../WINGs/proplist.c:184 ../../WINGs/proplist.c:236
#: ../../WINGs/proplist.c:394 ../../WINGs/proplist.c:474
#: ../../WINGs/proplist.c:1071 ../../WINGs/proplist.c:1123
#: ../../WINGs/proplist.c:1289 ../../WINGs/proplist.c:1368
#: ../../WINGs/proplist.c:1489 ../../WINGs/proplist.c:1536
msgid "Used proplist functions on non-WMPropLists objects"
msgstr ""
#: ../../WINGs/proplist.c:630
msgid "unterminated PropList string"
msgstr "nicht terminierter PropList string"
#: ../../WINGs/proplist.c:670
msgid "unterminated PropList data"
msgstr "nicht terminiertes PropList data"
#: ../../WINGs/proplist.c:678
msgid "unterminated PropList data (missing hexdigit)"
msgstr "nicht terminiertes PropList data (fehlendes hex-Zeichen)"
#: ../../WINGs/proplist.c:690
msgid "non hexdigit character in PropList data"
msgstr "falsches hex-Zeichen in PropList data"
#: ../../WINGs/proplist.c:725
msgid "unterminated PropList array"
msgstr "nicht terminiertes PropList array"
#: ../../WINGs/proplist.c:733
msgid "missing or unterminated PropList array"
msgstr "fehlendes oder nicht terminiertes PropList array"
#: ../../WINGs/proplist.c:743
msgid "could not get PropList array element"
msgstr ""
#: ../../WINGs/proplist.c:772
msgid "unterminated PropList dictionary"
msgstr ""
#: ../../WINGs/proplist.c:789
msgid "missing PropList dictionary key"
msgstr ""
#: ../../WINGs/proplist.c:791
msgid "missing PropList dictionary entry key or unterminated dictionary"
msgstr ""
#: ../../WINGs/proplist.c:799
msgid "error parsing PropList dictionary key"
msgstr ""
#: ../../WINGs/proplist.c:807
msgid "missing = in PropList dictionary entry"
msgstr ""
#: ../../WINGs/proplist.c:815
msgid "error parsing PropList dictionary entry value"
msgstr ""
#: ../../WINGs/proplist.c:823
msgid "missing ; in PropList dictionary entry"
msgstr ""
#: ../../WINGs/proplist.c:884
msgid ""
"was expecting a string, data, array or dictionary. If it's a string, try "
"enclosing it with \"."
msgstr ""
"string, data, array oder dictionary wurde erwartet. Zeichenketten mit \" "
"einklammern."
#: ../../WINGs/proplist.c:888
msgid "Comments are not allowed inside WindowMaker owned domain files."
msgstr "Kommentare sind in Domaindaten von WindowMaker nicht erlaubt."
#: ../../WINGs/proplist.c:1559 ../../WINGs/proplist.c:1624
msgid "extra data after end of property list"
msgstr "zusätzliche Daten hinter dem Ende der Propertyliste"
#: ../../WINGs/proplist.c:1602
#, c-format
msgid "could not get size for file '%s'"
msgstr "konnte Dateigrösse von '%s' nicht ermitteln"
#: ../../WINGs/proplist.c:1614
#, c-format
msgid "error reading from file '%s'"
msgstr "Fehler beim Lesen der Datei '%s'"
#: ../../WINGs/proplist.c:1665
#, c-format
msgid "mkstemp (%s) failed"
msgstr "mkstemp (%s) schlug fehl"
#: ../../WINGs/proplist.c:1676
#, c-format
msgid "mktemp (%s) failed"
msgstr "mktemp (%s) schlug fehl"
#: ../../WINGs/proplist.c:1687
#, c-format
msgid "open (%s) failed"
msgstr "open (%s) schlug fehl"
#: ../../WINGs/proplist.c:1694
#, c-format
msgid "writing to file: %s failed"
msgstr "Schreiben in Datei: %s schlug fehl"
#: ../../WINGs/proplist.c:1702
#, c-format
msgid "fclose (%s) failed"
msgstr "fclose (%s) schlug fehl"
#: ../../WINGs/proplist.c:1711
#, c-format
msgid "rename ('%s' to '%s') failed"
msgstr "rename ('%s' to '%s') schlug fehl"
#. something happened with the file. just overwrite it
#: ../../WINGs/userdefaults.c:192 ../../WINGs/userdefaults.c:208
#, c-format
msgid "cannot read domain from file '%s' when syncing"
msgstr "Kannn bei der Synchronisation nicht aus Datei '%s' lesen"
#: ../../WINGs/wcolor.c:198 ../../WINGs/wcolor.c:211 ../../WINGs/wcolor.c:250
#: ../../WINGs/wcolor.c:291
#, c-format
msgid "could not allocate %s color"
msgstr "konnte die Farbe %s nicht erzeugen"
#: ../../WINGs/wcolor.c:198
msgid "white"
msgstr "weiß"
#: ../../WINGs/wcolor.c:211
msgid "black"
msgstr "schwarz"
#: ../../WINGs/wcolor.c:250
msgid "gray"
msgstr "grau"
#: ../../WINGs/wcolor.c:291
msgid "dark gray"
msgstr "dunkelgrau"
#: ../../WINGs/wcolorpanel.c:415
msgid "Colors"
msgstr "Farben"
#: ../../WINGs/wcolorpanel.c:605 ../../WINGs/wcolorpanel.c:2824
msgid "Brightness"
msgstr "Helligkeit"
#: ../../WINGs/wcolorpanel.c:607 ../../WINGs/wcolorpanel.c:683
#: ../../WINGs/wcolorpanel.c:716 ../../WINGs/wcolorpanel.c:750
#: ../../WINGs/wcolorpanel.c:810 ../../WINGs/wcolorpanel.c:844
#: ../../WINGs/wcolorpanel.c:878 ../../WINGs/wcolorpanel.c:913
#: ../../WINGs/wcolorpanel.c:2164 ../../WINGs/wcolorpanel.c:2826
#: ../../WINGs/wcolorpanel.c:2862 ../../WINGs/wcolorpanel.c:2898
#: ../../WINGs/wcolorpanel.c:3746
msgid "Color Panel: Could not allocate memory"
msgstr "Color Panel: Konnte keinen Speicher reservieren"
#: ../../WINGs/wcolorpanel.c:680 ../../WINGs/wcolorpanel.c:681
msgid "Red"
msgstr "Rot"
#: ../../WINGs/wcolorpanel.c:713 ../../WINGs/wcolorpanel.c:714
msgid "Green"
msgstr "Grün"
#: ../../WINGs/wcolorpanel.c:747 ../../WINGs/wcolorpanel.c:748
msgid "Blue"
msgstr "Blau"
#: ../../WINGs/wcolorpanel.c:807 ../../WINGs/wcolorpanel.c:808
msgid "Cyan"
msgstr ""
#: ../../WINGs/wcolorpanel.c:841 ../../WINGs/wcolorpanel.c:842
msgid "Magenta"
msgstr ""
#: ../../WINGs/wcolorpanel.c:875 ../../WINGs/wcolorpanel.c:876
msgid "Yellow"
msgstr "Gelb"
#: ../../WINGs/wcolorpanel.c:910 ../../WINGs/wcolorpanel.c:911
msgid "Black"
msgstr "Schwarz"
#: ../../WINGs/wcolorpanel.c:991
msgid "Spectrum"
msgstr "Spektrum"
#: ../../WINGs/wcolorpanel.c:1021
msgid "Palette"
msgstr ""
#: ../../WINGs/wcolorpanel.c:1027
msgid "New from File..."
msgstr "Neu aus Datei..."
#: ../../WINGs/wcolorpanel.c:1028 ../../WINGs/wcolorpanel.c:1076
#: ../../WINGs/wcolorpanel.c:1093
msgid "Rename..."
msgstr "Umbenennen..."
#: ../../WINGs/wcolorpanel.c:1029 ../../WINGs/wcolorpanel.c:1077
#: ../../WINGs/wcolorpanel.c:1094 ../../WINGs/wcolorpanel.c:3321
msgid "Remove"
msgstr "Entfernen"
#: ../../WINGs/wcolorpanel.c:1030
msgid "Copy"
msgstr "Kopieren"
#: ../../WINGs/wcolorpanel.c:1031
msgid "New from Clipboard"
msgstr "Neu aus Zwischenablage"
#: ../../WINGs/wcolorpanel.c:1052
msgid "X11-Colors"
msgstr "X11-Farben"
#: ../../WINGs/wcolorpanel.c:1069
msgid "Color"
msgstr "Farbe"
#: ../../WINGs/wcolorpanel.c:1075
msgid "Add..."
msgstr "Hinzufügen..."
#: ../../WINGs/wcolorpanel.c:1085
msgid "List"
msgstr "Liste"
#: ../../WINGs/wcolorpanel.c:1092
msgid "New..."
msgstr "Neu..."
#: ../../WINGs/wcolorpanel.c:1231
#, c-format
msgid ""
"Color Panel: Could not create directory %s needed to store configurations"
msgstr ""
"Color Panel: Konnte das Verzeichnis %s zum Speichern der Konfiguration nicht erzeugen"
#. Delete the file, it doesn't belong here
#: ../../WINGs/wcolorpanel.c:1237 ../../WINGs/wcolorpanel.c:3207
#: ../../WINGs/wcolorpanel.c:3211
msgid "File Error"
msgstr "Dateifehler"
#: ../../WINGs/wcolorpanel.c:1238
msgid "Could not create ColorPanel configuration directory"
msgstr "Konnte Konfigurationsverzeichnis für Farbdialog nicht erzeugen"
#: ../../WINGs/wcolorpanel.c:1239 ../../WINGs/wcolorpanel.c:3208
#: ../../WINGs/wcolorpanel.c:3213 ../../WINGs/wcolorpanel.c:3240
#: ../../WINGs/wfilepanel.c:250 ../../WINGs/wfilepanel.c:647
#: ../../WINGs/wfilepanel.c:659 ../../WINGs/wfilepanel.c:760
#: ../../WINGs/wfilepanel.c:971 ../../WINGs/wfontpanel.c:709
msgid "OK"
msgstr "OK"
#: ../../WINGs/wcolorpanel.c:1245 ../../WINGs/wcolorpanel.c:1281
#: ../../WINGs/wcolorpanel.c:1299
msgid "Color Panel: Could not find file"
msgstr "Color Panel: Konnte Datei nicht finden"
#: ../../WINGs/wcolorpanel.c:1486 ../../WINGs/wcolorpanel.c:1551
#: ../../WINGs/wcolorpanel.c:1615
msgid "Color Panel: X failed request"
msgstr "Color Panel: X Anfrage schlug fehl"
#: ../../WINGs/wcolorpanel.c:2860
msgid "Saturation"
msgstr "Sättigung"
#: ../../WINGs/wcolorpanel.c:2896
msgid "Hue"
msgstr "Farbton"
#: ../../WINGs/wcolorpanel.c:3146
msgid "Open Palette"
msgstr "Palette öffnen"
#: ../../WINGs/wcolorpanel.c:3208
msgid "Invalid file format !"
msgstr "Ungültiges Dateiformat!"
#: ../../WINGs/wcolorpanel.c:3210
#, c-format
msgid "can't remove file %s"
msgstr "kann Datei %s nicht entfernen"
#: ../../WINGs/wcolorpanel.c:3212
msgid "Couldn't remove file from Configuration Directory !"
msgstr "Konnte Datei nicht aus Konfigurationsverzeichnis entfernen!"
#: ../../WINGs/wcolorpanel.c:3239
msgid "Rename"
msgstr "Umbenennen"
#: ../../WINGs/wcolorpanel.c:3239
msgid "Rename palette to:"
msgstr "Palette umbenennen in:"
#: ../../WINGs/wcolorpanel.c:3240 ../../WINGs/wfilepanel.c:259
#: ../../WINGs/wfilepanel.c:659 ../../WINGs/wfilepanel.c:760
msgid "Cancel"
msgstr "Abbrechen"
#. Careful, this palette exists already
#: ../../WINGs/wcolorpanel.c:3256 ../../WINGs/wfilepanel.c:760
msgid "Warning"
msgstr "Warnung"
#: ../../WINGs/wcolorpanel.c:3257
msgid ""
"Palette already exists !\n"
"\n"
"Overwrite ?"
msgstr ""
"Palette existiert bereits!\n"
"\n"
"Überschreiben?"
#: ../../WINGs/wcolorpanel.c:3257 ../../WINGs/wcolorpanel.c:3321
msgid "No"
msgstr "Nein"
#: ../../WINGs/wcolorpanel.c:3257 ../../WINGs/wcolorpanel.c:3321
msgid "Yes"
msgstr "Ja"
#: ../../WINGs/wcolorpanel.c:3289
#, c-format
msgid "Couldn't rename palette %s to %s\n"
msgstr "Konnte Palette %s nicht in %s umbenennen\n"
#: ../../WINGs/wcolorpanel.c:3315
msgid "This will permanently remove the palette "
msgstr "Das wird die Palette unwiderruflich löschen "
#: ../../WINGs/wcolorpanel.c:3318
msgid ""
".\n"
"\n"
"Are you sure you want to remove this palette ?"
msgstr ""
".\n"
"\n"
"Sind Sie sicher, dass Sie die Palette löschen wollen?"
#: ../../WINGs/wcolorpanel.c:3343
#, c-format
msgid "Couldn't remove palette %s\n"
msgstr "Konnte Palette %s nicht löschen\n"
#: ../../WINGs/wcolorpanel.c:3648
#, c-format
msgid "Could not open %s"
msgstr "Konnte %s nicht öffnen"
#: ../../WINGs/wcolorpanel.c:3655
#, c-format
msgid "Could not create %s"
msgstr "Konnte %s nicht erzeugen"
#: ../../WINGs/wcolorpanel.c:3666
#, c-format
msgid "Write error on file %s"
msgstr "Schreibfehler bei Datei %s"
#: ../../WINGs/wcolorpanel.c:3711
msgid "Color Panel: Color unspecified"
msgstr "Color Panel: Farbe nicht spezifiziert"
#: ../../WINGs/wfilepanel.c:235
msgid "Name:"
msgstr "Name:"
#: ../../WINGs/wfilepanel.c:332 ../../WINGs/wfilepanel.c:396
msgid "Open"
msgstr "Öffnen"
#: ../../WINGs/wfilepanel.c:350 ../../WINGs/wfilepanel.c:402
msgid "Save"
msgstr "Speichern"
#: ../../WINGs/wfilepanel.c:562
#, c-format
msgid "WINGs: could not open directory %s\n"
msgstr "WINGs: Konnte Verzeichnis %s nicht öffen\n"
#: ../../WINGs/wfilepanel.c:580
#, c-format
msgid "WINGs: could not stat %s\n"
msgstr "WINGs: Dateistatus von %s nicht bestimmbar\n"
#: ../../WINGs/wfilepanel.c:647 ../../WINGs/wfilepanel.c:970
#: ../../WINGs/wfontpanel.c:708
msgid "Error"
msgstr "Fehler"
#: ../../WINGs/wfilepanel.c:658
msgid "Create Directory"
msgstr "Verzeichnis anlegen"
#: ../../WINGs/wfilepanel.c:659
msgid "Enter directory name"
msgstr "Verzeichnisname eingeben"
#: ../../WINGs/wfilepanel.c:695 ../../WINGs/wfilepanel.c:734
#: ../../WINGs/wfilepanel.c:765 ../../WINGs/wfilepanel.c:793
msgid "Permission denied."
msgstr "Zugriff verweigert."
#: ../../WINGs/wfilepanel.c:698
#, c-format
msgid "'%s' already exists."
msgstr "'%s' existiert bereits."
#: ../../WINGs/wfilepanel.c:701
msgid "Path does not exist."
msgstr "Pfad existiert nicht."
#: ../../WINGs/wfilepanel.c:731 ../../WINGs/wfilepanel.c:790
#, c-format
msgid "'%s' does not exist."
msgstr "'%s' existiert nicht."
#: ../../WINGs/wfilepanel.c:738 ../../WINGs/wfilepanel.c:797
msgid "Insufficient memory available."
msgstr "Nicht genügend Speicher verfügbar."
#: ../../WINGs/wfilepanel.c:742 ../../WINGs/wfilepanel.c:801
#, c-format
msgid "'%s' is on a read-only filesystem."
msgstr "'%s' liegt auf einem read-only Dateisystem."
#: ../../WINGs/wfilepanel.c:745 ../../WINGs/wfilepanel.c:777
#: ../../WINGs/wfilepanel.c:804
#, c-format
msgid "Can not delete '%s'."
msgstr "Kann %s nicht löschen."
#: ../../WINGs/wfilepanel.c:752
#, c-format
msgid "Delete directory %s ?"
msgstr "Verzeichnis % s löschen?"
#: ../../WINGs/wfilepanel.c:756
#, c-format
msgid "Delete file %s ?"
msgstr "Datei %s löschen?"
#: ../../WINGs/wfilepanel.c:768
#, c-format
msgid "Directory '%s' does not exist."
msgstr "Verzeichnis '%s' existiert nicht."
#: ../../WINGs/wfilepanel.c:771
#, c-format
msgid "Directory '%s' is not empty."
msgstr "Verzeichnis '%s' ist nicht leer."
#: ../../WINGs/wfilepanel.c:774
#, c-format
msgid "Directory '%s' is busy."
msgstr "Verzeichnis '%s' ist belegt."
#: ../../WINGs/wfilepanel.c:787
#, c-format
msgid "'%s' is a directory."
msgstr "'%s' ist ein Verzeichnis."
#: ../../WINGs/wfilepanel.c:829
#, c-format
msgid "An error occured browsing '%s'."
msgstr "Fehler beim Lesen von '%s'."
#: ../../WINGs/wfilepanel.c:833
#, c-format
msgid "'%s' is not a directory."
msgstr "'%s' ist kein Verzeichnis."
#: ../../WINGs/wfilepanel.c:970
msgid "File does not exist."
msgstr "Datei existiert nicht."
#: ../../WINGs/wfont.c:129
#, c-format
msgid "the following character sets are missing in %s:"
msgstr "die folgenden Zeichensätze fehlen in %s:"
#: ../../WINGs/wfont.c:136
#, c-format
msgid ""
"the string \"%s\" will be used in place of any characters from those sets."
msgstr ""
"die Zeichenkette \"%s\" ersetzt alle anderen Zeichen dieser Zeichensätze."
#: ../../WINGs/wfont.c:287 ../../WINGs/wfont.c:323
#, c-format
msgid "could not load font set %s. Trying fixed."
msgstr "konnte Fonts nicht laden. Nehme fixed-Font."
#: ../../WINGs/wfont.c:293 ../../WINGs/wfont.c:329
#, c-format
msgid "could not load font %s. Trying fixed."
msgstr "Konnte Font %s nicht laden. Nehme fixed-Font."
#: ../../WINGs/wfont.c:297 ../../WINGs/wfont.c:333
msgid "could not load fixed font!"
msgstr "konnte fixed-Font nicht laden!"
#: ../../WINGs/wfont.c:428
#, c-format
msgid "font description %s is too large."
msgstr "Fontbeschreibung ist zu groß."
#: ../../WINGs/wfontpanel.c:205
msgid "Test!!!"
msgstr "Test!"
#: ../../WINGs/wfontpanel.c:211
msgid "Family"
msgstr "Familie"
#: ../../WINGs/wfontpanel.c:222
msgid "Typeface"
msgstr "Schriftart"
#: ../../WINGs/wfontpanel.c:233
msgid "Size"
msgstr "Größe"
#: ../../WINGs/wfontpanel.c:252
msgid "Set"
msgstr "Setzen"
#: ../../WINGs/wfontpanel.c:257
msgid "Revert"
msgstr "Zurückn."
#: ../../WINGs/wfontpanel.c:709
msgid "Could not retrieve font list"
msgstr "Konnte Fontliste nicht wiederherstellen"
#: ../../WINGs/wfontpanel.c:721
#, c-format
msgid "font name %s is longer than 256, which is invalid."
msgstr "Fontname %s ist ungültig, da länger als 256 Zeichen."
#: ../../WINGs/wfontpanel.c:868
msgid "Roman"
msgstr "Roman"
#: ../../WINGs/wfontpanel.c:871
msgid "Italic"
msgstr "Kursiv"
#: ../../WINGs/wfontpanel.c:873
msgid "Oblique"
msgstr "Schräg"
#: ../../WINGs/wfontpanel.c:875
msgid "Rev Italic"
msgstr ""
#: ../../WINGs/wfontpanel.c:877
msgid "Rev Oblique"
msgstr ""
#: ../../WINGs/wfontpanel.c:883
msgid "Normal"
msgstr "Normal"
#: ../../WINGs/widgets.c:415
#, c-format
msgid "WINGs: could not load widget images file: %s"
msgstr "WINGs: Konnte Widget-Bildatei %s nicht laden."
#: ../../WINGs/widgets.c:763
msgid ""
"could not load any fonts. Make sure your font installationand locale "
"settings are correct."
msgstr ""
"Konnte keine Fonts laden. Überprüfen Sie, ob Ihre Fontinstallation und "
"-einstellungen korrekt sind."
#: ../../WINGs/wruler.c:189
msgid "0 inches"
msgstr "0 Inch"

Some files were not shown because too many files have changed in this diff Show More