1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 12:28:22 +01:00

Code update for Window Maker version 0.50.0

Read changes in ChangeLog and NEWS
This commit is contained in:
dan
1999-01-06 15:22:33 +00:00
parent 16698efd45
commit 0261c32636
232 changed files with 20628 additions and 8087 deletions

20
AUTHORS
View File

@@ -13,7 +13,7 @@ restart, dock bug fixes
Andrea Arcangeli <arcangeli@mbox.queen.it> Andrea Arcangeli <arcangeli@mbox.queen.it>
Fix for cascade window placement Fix for cascade window placement
Peter Bentley <peter.bentley@nomura.co.uk> Peter Bentley <pete@sorted.org>
fixed WM_STATE handling bug, fixed some memory leaks, made application menus fixed WM_STATE handling bug, fixed some memory leaks, made application menus
be mapped near the windows for non-click-to-focus modes, timer bug be mapped near the windows for non-click-to-focus modes, timer bug
@@ -27,6 +27,9 @@ shaded window indication in window list
Rob Clark <rclark@turing.cs.hmc.edu> Rob Clark <rclark@turing.cs.hmc.edu>
Text input field, 15bpp support Text input field, 15bpp support
George Clernon <clernong@tinet.ie>
bug fix in browser widget
Sylvain CORRE <sylvain.corre@wanadoo.fr> Sylvain CORRE <sylvain.corre@wanadoo.fr>
bug fix for MkLinux/PPC bug fix for MkLinux/PPC
@@ -53,8 +56,8 @@ Documentation help, autoconf cleanup
Mark 'segfault' Guzman <root@lsd.pbx.org> Mark 'segfault' Guzman <root@lsd.pbx.org>
Various bugfixes Various bugfixes
Ullrich Hafner <hafner@informatik.uni-wuerzburg.de> Ullrich Hafner <hafner@bigfoot.de>
Better detection of gfx libraries Better detection of gfx libraries, added IconTitleColor/IconTitleBack
Greg Hayes <sdc@choice.net> Greg Hayes <sdc@choice.net>
Twisted miniaturization animation Twisted miniaturization animation
@@ -111,7 +114,7 @@ Tim Malone <mrgone@eskimo.com>
bug fix, jpeg bug fix bug fix, jpeg bug fix
MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp> 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> Brian Alexander Martin <brian@goober.wireless.ucsc.edu>
PIPE_MENU PIPE_MENU
@@ -141,7 +144,7 @@ Initial code for clip's collapse feature.
Ture Pelsson <ture@lysator.liu.se> Ture Pelsson <ture@lysator.liu.se>
various portability fixes, replaced busy wait with select() in event 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 some other bug fixes, support for poll() in event handling code
Toby Sargeant <?> Toby Sargeant <?>
menu format converter menu format converter
@@ -155,6 +158,9 @@ REDUCE_APPICON/single-icon
Chong Shang Shan <chongsha@sps.nus.edu.sg> Chong Shang Shan <chongsha@sps.nus.edu.sg>
flipping iconification animation flipping iconification animation
Daniel Skarda <0rfelyus@atrey.karlin.mff.cuni.cz>
SGI "black dialogs" bug fix
Paul D. Smith <psmith@BayNetworks.COM> Paul D. Smith <psmith@BayNetworks.COM>
SunOS portability, configure fixes SunOS portability, configure fixes
@@ -182,7 +188,9 @@ dgradient fix
"]d" <mhz@gpf.or.th> "]d" <mhz@gpf.or.th>
Window list menu miniaturized/hidden hints, XDE support, XKB lock Window list menu miniaturized/hidden hints, XDE support, XKB lock
language status language status, WINGs enhancements, bug fixes, window commands menu
enhancement, window move/resize by keyboard
Trae Mc Combs <x@themes.org> Trae Mc Combs <x@themes.org>
BlueWaves.jpeg background image in BlueWaves theme. BlueWaves.jpeg background image in BlueWaves theme.

2
BUGS
View File

@@ -2,8 +2,6 @@
- during startup, transient windows should be miniaturized with their owners - during startup, transient windows should be miniaturized with their owners
not in their own icons not in their own icons
- stacking code is buggy (or XFree is buggy) - 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?
- save session doesnt work on some platforms (Alpha and Sparc) - save session doesnt work on some platforms (Alpha and Sparc)
- texture pixmaps are being incorrectly freed somewhere. Either - texture pixmaps are being incorrectly freed somewhere. Either
fix bug (to support broken MetroX servers) or remove all useless references fix bug (to support broken MetroX servers) or remove all useless references

View File

@@ -1,3 +1,45 @@
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: Changes since version 0.20.2:
............................. .............................

1317
FAQ

File diff suppressed because it is too large Load Diff

67
INSTALL
View File

@@ -7,12 +7,13 @@ SUPPORTED PLATFORMS
=================== ===================
(ie: I've heard someone has compiled it on...) (ie: I've heard someone has compiled it on...)
- Intel/Linux RedHat 4.2 (primary platform) - Intel/Linux Slackware 3.5 (primary platform)
- Intel/Linux other distributions - Intel/Linux other distributions
- Sparc/Linux RedHat 5.1 - Sparc/Linux RedHat 5.1
- PowerPC/MkLinux - PowerPC/MkLinux
- Alpha/Linux RedHat 5.1 - Alpha/Linux RedHat 5.1
- FreeBSD - FreeBSD
- NetBSD
- Solaris 2.5.1, 2.5.2 - Solaris 2.5.1, 2.5.2
- Solaris 2.6.0 - Solaris 2.6.0
- Solaris 2.7beta - Solaris 2.7beta
@@ -21,15 +22,19 @@ SUPPORTED PLATFORMS
- OSF/1 - OSF/1
- HP-UX - HP-UX
- AIX 4.1.4 / IBM PowerPC - AIX 4.1.4 / IBM PowerPC
- AIX 4.3.2 / IBM PowerPC
- AIX 5.3 - AIX 5.3
- DEC Alpha/Digital UNIX 4.x - DEC Alpha/Digital UNIX 4.x
- XFree86 / OS/2 - XFree86 / OS/2
- Corel NetWinder - Corel NetWinder
- SunOS 4.x - SunOS 4.x
- MacOS / MachTen 4.1.1 - PowerMac / Power MachTen 4.1.1 over MacOS
Patches to make it work on other platforms are welcome. Patches to make it work on other platforms are welcome.
If the latest version doesn't work for you, try 0.19.3,
which is known to be pretty stable on many platforms.
REQUIREMENTS: REQUIREMENTS:
============= =============
@@ -72,8 +77,7 @@ OPTIONAL:
These libraries are not required to make Window Maker 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 are supported in case you want to use them. Version numbers are those
that I have (and therefore, guraranteed to work), but other versions that I have (and therefore, guraranteed to work), but other versions
might work too. Tell me if you made wmaker work with some library might work too.
with a version older than the stated here.
- libXPM 4.7 or newer - libXPM 4.7 or newer
@@ -118,6 +122,37 @@ support compiled in.
To get a list of other options, run ./configure --help To get a list of other options, run ./configure --help
--enable-kanji support to display Kanji characters, Korean, Chinese
and other languagues that require special characters.
--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>
--disable-shm disable use of the MIT shared memory extension. This will
slow down texture generation a little bit, but in some cases
it seems to be necessary due to a bug that manifests as messed
icons and textures.
--disable-motif disable support for mwm hints
--enable-gnome enable support for stuff needed by GNOME
(GNOME compliant bla bla bla)
--enable-kde enable support for kde/kwm 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.
--enable-modelock XKB language status lock support. If you don't know
what it is you probably don't need it.
--enable-sound enable support of sound effects module --enable-sound enable support of sound effects module
--disable-xpm disables use of the XPM library even if it is available on --disable-xpm disables use of the XPM library even if it is available on
@@ -136,19 +171,6 @@ To get a list of other options, run ./configure --help
--enable-debug adds extra debugging information. Do not use it --enable-debug adds extra debugging information. Do not use it
unless you're debugging Window Maker. unless you're debugging Window Maker.
--enable-kanji support to display Kanji characters, Korean, Chinese
and other languagues that require special characters.
--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>
--disable-shm disable use of the MIT shared memory extension. This will
slow down texture generation.
--enable-modelock XKB language status lock support. If you don't know
what it is you probably don't need it.
PLATFORM SPECIFIC NOTES: PLATFORM SPECIFIC NOTES:
@@ -164,6 +186,11 @@ PLATFORM SPECIFIC NOTES:
You also might need to use the --with-gfx-libs and --with-gfx-incs You also might need to use the --with-gfx-libs and --with-gfx-incs
to supply the directory where libtiff is located. to supply the directory where libtiff is located.
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 bug and will be fixed.
- RedHat Linux - RedHat Linux
Make sure you don't have the LANG and LINGUAS environment variables 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 set to en_RN. Also, make sure you have /usr/local/bin in your
@@ -424,9 +451,9 @@ menu
configure the fonts appropriately. Read the manual page for XCreateFontSet configure the fonts appropriately. Read the manual page for XCreateFontSet
to have more details about it. You must change the ~/G/D/WindowMaker file 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 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 dialog windows, change ~/G/D/WMGLOBAL. The %d in the font names must not be
supply a single font in WMGLOBAL. The %d in the font names must not be removed. You can also use the supplied wsetfont script for the task.
removed. Read the script itself for instructions.
For example, you can specify the following in ~/G/D/WindowMaker: For example, you can specify the following in ~/G/D/WindowMaker:

24
Install
View File

@@ -57,6 +57,30 @@ echo
echo "Option Selection" echo "Option Selection"
echo "================" echo "================"
######################## KDE
echo
echo "Do you want KDE support?"
echo -n <y/n> [n] "
read kde
if [ "$kde" = y -o "$kde" = Y ]; then
OPTIONS="$OPTIONS --enable-kde"
echo "Do you want to disable features that become duplicated with"
echo "KDE support (like root menus)?"
echo -n <y/n> [n] "
read lite
if [ "$lite" = y -o "lite" = Y ]; then
OPTIONS="$OPTIONS --enable-lite"
fi
fi
######################## 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
######################## NLS ######################## NLS
echo echo

View File

@@ -37,6 +37,11 @@ ftp://ftp.cybertrails.com/pub/windowmaker/
Contact: Adam Jacob <adam@cybertrails.com> 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 WindowMaker Distribution Packages
============================================= =============================================

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -100,7 +103,7 @@ CONFIG_HEADER = ./src/config.h
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \
Makefile.in NEWS TODO aclocal.m4 config.guess config.sub configure \ Makefile.in NEWS TODO aclocal.m4 config.guess config.sub configure \
configure.in install-sh missing mkinstalldirs configure.in install-sh ltconfig ltmain.sh missing mkinstalldirs
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
@@ -292,6 +295,7 @@ clean: clean-recursive clean-am
distclean: distclean-recursive distclean-am distclean: distclean-recursive distclean-am
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-recursive maintainer-clean-am maintainer-clean: maintainer-clean-recursive maintainer-clean-am
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

149
NEWS
View File

@@ -2,6 +2,155 @@
NEWS for veteran Window Maker users NEWS for veteran Window Maker users
----------------------------------- -----------------------------------
--- 0.50.0
KDE and GNOME
-------------
Added full support for GNOME and KWM hints.
Read the INSTALL file to see how enable them.
Everything in the so called GNOME window manager bla bla bla pseudo-spec is
implemented.
As for KDE stuff, it implements 90% of everything kwm does, adds some
Window Maker specific extensions to it and still uses half of the memory
kwm does, which should be enough to let you dump kwm ;) For details on what
exactly is implemented, see comments in src/kwm.c Read the README.KDE file
for more information.
WARNING: Some KDE hints are badly designed, so doing things like using
kpanel's desktop switcher/pager and Window Maker's internal workspace
management functions to create, destroy and rename workspaces at the same
time might cause unknown effects. To be on the safe side, only
use either of them to manage workspaces. Switching workspaces is hopefully,
safe, so you can switch workspaces from wherever you want.
Workspace Specific Background Images
------------------------------------
Use the WorkspaceSpecificBack to set background images for specific
workspaces. The WorkspaceBack is used as the default background image.
Example:
WorkspaceSpecificBack = ((solid, red), (cpixmap, ship.jpg, gray), (),
(dgradient, red, blue))
This will set the background image of workspace 1 to (solid, 0),
2 to ship.jpg and 4 to a gradient. Workspace 3 and other workspaces
will have the image defined by WorkspaceBack.
Note that this uses quite some memory...
setstyle/getstyle
-----------------
setstyle now accepts the -nofonts flag, which will load the style
file ignoring all font related options.
Example:
setstyle -nofonts Blabla.style
getstyle can be used to create theme packs. See the usage in the
WindowMaker/README.themes file.
New Texture Type
----------------
Textured gradients will tile a texture pixmap and combine it with a gradient,
using an arbitrary opaqueness.
Syntax is (thgradient, <file>, <opaqueness>, <color1>, <color2>)
(tvgradient, <file>, <opaqueness>, <color1>, <color2>)
(tdgradient, <file>, <opaqueness>, <color1>, <color2>)
where:
<color1> and <color2> are the colors for the gradient,
<file> is the texture file and
<opaqueness> is the opaqueness to merge the texture witht the gradient,
ranging from 0 to 255.
Example:
(thgradient, "BlueImage.jpeg", 120, white, black)
The BlackTexture style and Checker theme are examples.
Hints:
You can use any type of pixmap file for this, but small (like 64x32)
grayscale pixmap files should get the best results (fast and low memory
usage). You can use color pixmaps, but it is harder to get the desired effect
with them.
Be warned that this texture type is the slowest.
New Options
-----------
IconTitleBack and IconTitleColor control the color of the
miniwindow title. Both of them are colors.
Example:
IconTitleColor=white;
IconTitleBack=black;
Since this introduces an incompatibility in themes and getting flamed by the
themes ppl isn't the most pleasant thing ("Whaddafuk you're thinking!? You
just broke 500 themes!!!" ;) the setstyle command was hacked so that it will
make old themes work as before, by trying to automatically set the above
options. Note that in some cases it will not have exactly the same results as
before.
StartMaximized window attribute. Will maximize the window when it
is mapped.
AutoRaiseLower option for the Clip. This allows automatic Raise/Lower of the
Clip icons when the mouse pointer enter/leave the Clip. To avoid unwanted
raising/lowering there is a time threshold before raising/lowering.
The thresholds can be changed in wconfig.h by changing one or both of
AUTO_LOWER_DELAY and AUTO_RAISE_DELAY (expressed in miliseconds).
For example if you set AUTO_RAISE_DELAY to 0, then the Clip will be raised as
soon as the mouse pointer enters it's area. Setting AUTO_RAISE_DELAY to a very
big value, will make the Clip to practically do not auto raise unless clicked,
but to be automatically lowered after AUTO_LOWER_DELAY (ms) when leaved.
New ThemePack Format
--------------------
Starting with this version, a new format of themes is being supported.
Before you open pine and start composing your flame, rest assured that
the old format is still supported. The new format is documented
in the WindowMaker/README.themes file.
Root Menu
---------
The -noext option for OPEN_MENU will strip whatever is after the last .
in file names that appear on the opened directory. So,
OPEN_MENU ~/bg WITH xv -root -quit
will create a menu with all the images in ~/bg without the extension.
--- 0.20.3 --- 0.20.3

48
README
View File

@@ -1,9 +1,12 @@
Window Maker X11 Window Manager Window Maker X11 Window Manager
<http://windowmaker.org> <http://windowmaker.org>
<ftp://ftp.windowmaker.org> <ftp://ftp.windowmaker.org>
by
Alfredo K. Kojima Alfredo K. Kojima
@@ -12,6 +15,11 @@
Matthew Hawkins Matthew Hawkins
Web/FTP Master
Phillip Smith
Congratulations! You have purchased an extremely fine Congratulations! You have purchased an extremely fine
device that would give you thousands of years of trouble-free device that would give you thousands of years of trouble-free
@@ -42,6 +50,20 @@ Window Maker was designed keeping integration with GNUstep in mind and is the
"official" window manager for it. Read more about GNUstep further on this "official" window manager for it. Read more about GNUstep further on this
file. file.
\begin{marketing babble}
Window Maker is also KDE and GNOME compliant, which means you can use
it as the window manager of these desktop environments and even fully
replace kwm with wmaker if you use KDE. In that case, you would benefit
from the best of both worlds, being able to take advantage of the usability
and unique features of Window Maker, while still having access to KDE
features such as the panel, pager and tight integration with all KDE
applications. I've known of many cases where people keep switching KDE
and Window Maker depending on their mood or needs of the day, but now
you don't need that anymore :)
As GNOME components become more available, the same can be said about it.
Window Maker can be considered a fully compliant GNOME window manager.
\end{marketing babble}
Window Maker was previously called WindowMaker. Window Maker was previously called WindowMaker.
Window Maker has no connection with Windowmaker, the software for Window Maker has no connection with Windowmaker, the software for
@@ -148,15 +170,18 @@ graphical (and non-graphical) applications; providing among other things,
base system libraries, a high-level GUI application framework that uses a base system libraries, a high-level GUI application framework that uses a
Display PostScript(tm)-like imaging model (DGS), objects for accessing Display PostScript(tm)-like imaging model (DGS), objects for accessing
relational databases, distributed objects and a graphical development relational databases, distributed objects and a graphical development
environment, with a interface builder, a project management system and other environment, with tools like interface modeller, a project management system
tools. (project center) and other tools.
GNUstep will be used to create a user environment, with everything needed for The GNUstep development system will be used to create a user environment,
a complete graphical user interface, such as a file viewer, text editors and with everything needed for a complete graphical user interface, such as a
other applications. Note that the user environment (or "desktop environment") file viewer, text editors and other applications. Note that the user
is only a small part of the whole GNUstep project. 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 For more information on the GNUstep project, visit: http://www.gnustep.org
and http://gnustep.current.nu
Running multiple instances of Window Maker Running multiple instances of Window Maker
@@ -316,11 +341,12 @@ Musicware
========= =========
If you use Window Maker and *really* like it, please consider making my day If you use Window Maker and *really* like it, please consider making my day
by sending me a music CD (or a MiniDisc) of your favorite band, singer, by sending me a music CD (or a MiniDisc or even a MP3 CDR) of your favorite
instrumentist, composer or whatever :^). I like listening to music and would band, singer, instrumentist, composer or whatever :^). I like listening to
love to get new CDs, especially from other parts of the world. I like almost music and would love to get new CDs, especially from other parts of the
any kind of music, from Ozzy Osbourne to Bach (mas não pagode e sertanejo world. I like almost any kind of music, from Ozzy Osbourne to Bach (mas não
pelamordideus :), so I will be happy to receive just about anything. pagode e sertanejo pelamordideus :), so I will be happy to receive just about
anything.
Snail mail address: Snail mail address:

16
TODO
View File

@@ -3,21 +3,22 @@ Do ASAP:
======== ========
- fix bestvisual selection code. Broken. - 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. - 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 (maybe XFree 3.2 bug)
- fix RemakeStackList() to account for transient windows - fix RemakeStackList() to account for transient windows
- differential update of appmenu
- make unhide app map windows in the same stacking order they were before - make unhide app map windows in the same stacking order they were before
hiding hiding
- blink border of clients with UrgencyHint set between red and black - blink border of clients with UrgencyHint set between red and black
- finish session stuff - finish session stuff
- order window list menu by workspace - fix scroller to not jump while dragging knob (lock setparameters() while dragging?)
- add multiline support for balloons
- move/add balloon to WINGs
- finish XStandardColormap stuff in wrlib
Need to do: Need to do:
=========== ===========
- allow user to select/restore default root menu from wprefs
- fix and include the windoze cycle window patch - fix and include the windoze cycle window patch
- support for X11R6.4 extension for getting extra visual info in wrlib's - support for X11R6.4 extension for getting extra visual info in wrlib's
automatic best context guessing automatic best context guessing
- rewrite menu traversal code
- docklet to control AccessX (keyboard accessibility) functions - docklet to control AccessX (keyboard accessibility) functions
- rewrite all redundant stuff to use WINGs - rewrite all redundant stuff to use WINGs
- resizebartexture option - resizebartexture option
@@ -30,9 +31,6 @@ Need to do:
- rewrite defaults/wdefaults stuff to use WINGs UD stuff. Search list: - rewrite defaults/wdefaults stuff to use WINGs UD stuff. Search list:
~/G/D/WindowMaker /u/l/s/W/D/WindowMaker built-in-defaults ~/G/D/WindowMaker /u/l/s/W/D/WindowMaker built-in-defaults
- remake internal string processing to use wchar? unicode? - remake internal string processing to use wchar? unicode?
- -stateprefix cmd arg to specify sufix for WMState domain (multiple instance
support)
- GNOME stuff
- add new file for stuff like default commands and dnd commands for - add new file for stuff like default commands and dnd commands for
docked apps, balloons for the dock etc docked apps, balloons for the dock etc
- alpha-channel app specified icons - alpha-channel app specified icons
@@ -41,14 +39,12 @@ Maybe some day:
=============== ===============
- virtual workspace - virtual workspace
- optimize for size - optimize for size
- make dithering in 8bpp better
Never: (so, dont even bother to ask) Never: (so, dont even bother to ask)
====== ======
- different themes for each workspace. Unless you give us a SGI/Power Onyx - different themes for each workspace. Unless you give us a SGI/Power Onyx
with 2 CPUs ;). Different workspacebacks for each workspace is being with 2 CPUs ;).
considered, but don't hold your breath.
- anything that requires the mouse pointer to be jumped by WindowMaker to - 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.

View File

@@ -1,3 +1,20 @@
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: changes since wmaker 0.20.2:
............................ ............................

View File

@@ -5,39 +5,43 @@ AUTOMAKE_OPTIONS = no-dependencies
SUBDIRS = Resources SUBDIRS = Resources
LIBLIST= -L$(top_builddir)/wrlib -lwraster\ LIBLIST= $(top_builddir)/wrlib/libwraster.la\
@GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ \ @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ \
-lm -L$(top_builddir)/libPropList -lPropList -lm $(top_builddir)/libPropList/libPropList.la
#lib_LTLIBRARIES = libWINGs.la
lib_LIBRARIES = libWINGs.a lib_LIBRARIES = libWINGs.a
#libWINGs_la_LDFLAGS = -version-info 1:1:0
include_HEADERS = WINGs.h WUtil.h WINGsP.h include_HEADERS = WINGs.h WUtil.h WINGsP.h
noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
testmywidget_LDADD = -L. -lWINGs $(LIBLIST) testmywidget_LDADD = libWINGs.a $(LIBLIST)
fontl_SOURCES = fontl.c fontl_SOURCES = fontl.c
fontl_LDADD = -L. -lWINGs $(LIBLIST) fontl_LDADD = libWINGs.a $(LIBLIST)
wtest_SOURCES = wtest.c wtest_SOURCES = wtest.c
wtest_LDADD = -L. -lWINGs $(LIBLIST) wtest_LDADD = libWINGs.a $(LIBLIST)
wtest_DEPENDENCIES = libWINGs.a wtest_DEPENDENCIES = libWINGs.a
wmfile_SOURCES = wmfile.c wmfile_SOURCES = wmfile.c
wmfile_LDADD = -L. -lWINGs $(LIBLIST) wmfile_LDADD = libWINGs.a $(LIBLIST)
wmquery_SOURCES = wmquery.c wmquery_SOURCES = wmquery.c
wmquery_LDADD = -L. -lWINGs $(LIBLIST) wmquery_LDADD = libWINGs.a $(LIBLIST)
EXTRA_DIST = logo.xpm EXTRA_DIST = logo.xpm

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -94,37 +97,41 @@ AUTOMAKE_OPTIONS = no-dependencies
SUBDIRS = Resources SUBDIRS = Resources
LIBLIST= -L$(top_builddir)/wrlib -lwraster\ LIBLIST= $(top_builddir)/wrlib/libwraster.la\
@GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ \ @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ \
-lm -L$(top_builddir)/libPropList -lPropList -lm $(top_builddir)/libPropList/libPropList.la
#lib_LTLIBRARIES = libWINGs.la
lib_LIBRARIES = libWINGs.a lib_LIBRARIES = libWINGs.a
#libWINGs_la_LDFLAGS = -version-info 1:1:0
include_HEADERS = WINGs.h WUtil.h WINGsP.h include_HEADERS = WINGs.h WUtil.h WINGsP.h
noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
testmywidget_LDADD = -L. -lWINGs $(LIBLIST) testmywidget_LDADD = libWINGs.a $(LIBLIST)
fontl_SOURCES = fontl.c fontl_SOURCES = fontl.c
fontl_LDADD = -L. -lWINGs $(LIBLIST) fontl_LDADD = libWINGs.a $(LIBLIST)
wtest_SOURCES = wtest.c wtest_SOURCES = wtest.c
wtest_LDADD = -L. -lWINGs $(LIBLIST) wtest_LDADD = libWINGs.a $(LIBLIST)
wtest_DEPENDENCIES = libWINGs.a wtest_DEPENDENCIES = libWINGs.a
wmfile_SOURCES = wmfile.c wmfile_SOURCES = wmfile.c
wmfile_LDADD = -L. -lWINGs $(LIBLIST) wmfile_LDADD = libWINGs.a $(LIBLIST)
wmquery_SOURCES = wmquery.c wmquery_SOURCES = wmquery.c
wmquery_LDADD = -L. -lWINGs $(LIBLIST) wmquery_LDADD = libWINGs.a $(LIBLIST)
EXTRA_DIST = logo.xpm EXTRA_DIST = logo.xpm
@@ -196,20 +203,26 @@ PROGRAMS = $(noinst_PROGRAMS)
wtest_OBJECTS = wtest.o wtest_OBJECTS = wtest.o
wtest_LDFLAGS = wtest_LDFLAGS =
wmquery_OBJECTS = wmquery.o wmquery_OBJECTS = wmquery.o
wmquery_DEPENDENCIES = wmquery_DEPENDENCIES = libWINGs.a $(top_builddir)/wrlib/libwraster.la \
$(top_builddir)/libPropList/libPropList.la
wmquery_LDFLAGS = wmquery_LDFLAGS =
wmfile_OBJECTS = wmfile.o wmfile_OBJECTS = wmfile.o
wmfile_DEPENDENCIES = wmfile_DEPENDENCIES = libWINGs.a $(top_builddir)/wrlib/libwraster.la \
$(top_builddir)/libPropList/libPropList.la
wmfile_LDFLAGS = wmfile_LDFLAGS =
fontl_OBJECTS = fontl.o fontl_OBJECTS = fontl.o
fontl_DEPENDENCIES = fontl_DEPENDENCIES = libWINGs.a $(top_builddir)/wrlib/libwraster.la \
$(top_builddir)/libPropList/libPropList.la
fontl_LDFLAGS = fontl_LDFLAGS =
testmywidget_OBJECTS = testmywidget.o mywidget.o testmywidget_OBJECTS = testmywidget.o mywidget.o
testmywidget_DEPENDENCIES = testmywidget_DEPENDENCIES = libWINGs.a \
$(top_builddir)/wrlib/libwraster.la \
$(top_builddir)/libPropList/libPropList.la
testmywidget_LDFLAGS = testmywidget_LDFLAGS =
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@ LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
HEADERS = $(include_HEADERS) HEADERS = $(include_HEADERS)
DIST_COMMON = README ChangeLog Makefile.am Makefile.in TODO DIST_COMMON = README ChangeLog Makefile.am Makefile.in TODO
@@ -225,7 +238,7 @@ OBJECTS = $(libWINGs_a_OBJECTS) $(wtest_OBJECTS) $(wmquery_OBJECTS) $(wmfile_OBJ
all: all-recursive all-am all: all-recursive all-am
.SUFFIXES: .SUFFIXES:
.SUFFIXES: .S .c .o .s .SUFFIXES: .S .c .lo .o .s
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Makefile cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Makefile
@@ -285,6 +298,25 @@ distclean-compile:
maintainer-clean-compile: maintainer-clean-compile:
.c.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
.s.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
.S.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
maintainer-clean-libtool:
libWINGs.a: $(libWINGs_a_OBJECTS) $(libWINGs_a_DEPENDENCIES) libWINGs.a: $(libWINGs_a_OBJECTS) $(libWINGs_a_DEPENDENCIES)
-rm -f libWINGs.a -rm -f libWINGs.a
$(AR) cru libWINGs.a $(libWINGs_a_OBJECTS) $(libWINGs_a_LIBADD) $(AR) cru libWINGs.a $(libWINGs_a_OBJECTS) $(libWINGs_a_LIBADD)
@@ -463,18 +495,19 @@ maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean-am: mostlyclean-libLIBRARIES mostlyclean-compile \ mostlyclean-am: mostlyclean-libLIBRARIES mostlyclean-compile \
mostlyclean-noinstPROGRAMS mostlyclean-tags \ mostlyclean-libtool mostlyclean-noinstPROGRAMS \
mostlyclean-generic mostlyclean-tags mostlyclean-generic
clean-am: clean-libLIBRARIES clean-compile clean-noinstPROGRAMS \ clean-am: clean-libLIBRARIES clean-compile clean-libtool \
clean-tags clean-generic mostlyclean-am clean-noinstPROGRAMS clean-tags clean-generic \
mostlyclean-am
distclean-am: distclean-libLIBRARIES distclean-compile \ distclean-am: distclean-libLIBRARIES distclean-compile \
distclean-noinstPROGRAMS distclean-tags \ distclean-libtool distclean-noinstPROGRAMS \
distclean-generic clean-am distclean-tags distclean-generic clean-am
maintainer-clean-am: maintainer-clean-libLIBRARIES \ maintainer-clean-am: maintainer-clean-libLIBRARIES \
maintainer-clean-compile \ maintainer-clean-compile maintainer-clean-libtool \
maintainer-clean-noinstPROGRAMS maintainer-clean-tags \ maintainer-clean-noinstPROGRAMS maintainer-clean-tags \
maintainer-clean-generic distclean-am maintainer-clean-generic distclean-am
@@ -484,6 +517,7 @@ clean: clean-recursive clean-am
distclean: distclean-recursive distclean-am distclean: distclean-recursive distclean-am
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-recursive maintainer-clean-am maintainer-clean: maintainer-clean-recursive maintainer-clean-am
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"
@@ -492,14 +526,15 @@ maintainer-clean: maintainer-clean-recursive maintainer-clean-am
.PHONY: mostlyclean-libLIBRARIES distclean-libLIBRARIES \ .PHONY: mostlyclean-libLIBRARIES distclean-libLIBRARIES \
clean-libLIBRARIES maintainer-clean-libLIBRARIES uninstall-libLIBRARIES \ clean-libLIBRARIES maintainer-clean-libLIBRARIES uninstall-libLIBRARIES \
install-libLIBRARIES mostlyclean-compile distclean-compile \ install-libLIBRARIES mostlyclean-compile distclean-compile \
clean-compile maintainer-clean-compile mostlyclean-noinstPROGRAMS \ clean-compile maintainer-clean-compile mostlyclean-libtool \
distclean-noinstPROGRAMS clean-noinstPROGRAMS \ distclean-libtool clean-libtool maintainer-clean-libtool \
maintainer-clean-noinstPROGRAMS uninstall-includeHEADERS \ mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \
install-includeHEADERS install-data-recursive uninstall-data-recursive \ clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
install-exec-recursive uninstall-exec-recursive installdirs-recursive \ uninstall-includeHEADERS install-includeHEADERS install-data-recursive \
uninstalldirs-recursive all-recursive check-recursive \ uninstall-data-recursive install-exec-recursive \
installcheck-recursive info-recursive dvi-recursive \ uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
mostlyclean-recursive distclean-recursive clean-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 \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info dvi \ distclean-tags clean-tags maintainer-clean-tags distdir info dvi \
installcheck all-am install-exec-am install-data-am uninstall-am \ installcheck all-am install-exec-am install-data-am uninstall-am \

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -193,6 +196,7 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

View File

@@ -6,7 +6,7 @@
#include <wraster.h> #include <wraster.h>
#include <X11/Xlib.h> #include <X11/Xlib.h>
#define WINGS_H_VERSION 980930 #define WINGS_H_VERSION 981220
@@ -188,7 +188,7 @@ enum {
#define WSIHighlightedArrowUp 9 #define WSIHighlightedArrowUp 9
#define WSIArrowDown 10 #define WSIArrowDown 10
#define WSIHighlightedArrowDown 11 #define WSIHighlightedArrowDown 11
#define WSICheckMark 12
enum { enum {
WLDSSelected = (1 << 16), WLDSSelected = (1 << 16),
@@ -352,8 +352,8 @@ typedef void WMCallback(void *data);
/* delegate method like stuff */ /* delegate method like stuff */
typedef void WMFreeDataProc(void *data); typedef void WMFreeDataProc(void *data);
typedef void WMListDrawProc(WMList *lPtr, Drawable d, char *text, int state, typedef void WMListDrawProc(WMList *lPtr, int index, Drawable d, char *text,
WMRect *rect); int state, WMRect *rect);
/* /*
typedef void WMSplitViewResizeSubviewsProc(WMSplitView *sPtr, typedef void WMSplitViewResizeSubviewsProc(WMSplitView *sPtr,
@@ -493,6 +493,8 @@ WMPixmap *WMCreatePixmapFromFile(WMScreen *scrPtr, char *fileName);
WMPixmap *WMCreateBlendedPixmapFromFile(WMScreen *scrPtr, char *fileName, WMPixmap *WMCreateBlendedPixmapFromFile(WMScreen *scrPtr, char *fileName,
RColor *color); RColor *color);
void WMDrawPixmap(WMPixmap *pixmap, Drawable d, int x, int y);
Pixmap WMGetPixmapXID(WMPixmap *pixmap); Pixmap WMGetPixmapXID(WMPixmap *pixmap);
Pixmap WMGetPixmapMaskXID(WMPixmap *pixmap); Pixmap WMGetPixmapMaskXID(WMPixmap *pixmap);
@@ -694,6 +696,8 @@ void WMSetLabelWraps(WMLabel *lPtr, Bool flag);
void WMSetLabelImage(WMLabel *lPtr, WMPixmap *image); void WMSetLabelImage(WMLabel *lPtr, WMPixmap *image);
WMPixmap *WMGetLabelImage(WMLabel *lPtr);
void WMSetLabelImagePosition(WMLabel *lPtr, WMImagePosition position); void WMSetLabelImagePosition(WMLabel *lPtr, WMImagePosition position);
void WMSetLabelTextAlignment(WMLabel *lPtr, WMAlignment alignment); void WMSetLabelTextAlignment(WMLabel *lPtr, WMAlignment alignment);
@@ -738,6 +742,7 @@ void WMSetTextFieldEnabled(WMTextField *tPtr, Bool flag);
void WMSetTextFieldSecure(WMTextField *tPtr, Bool flag); void WMSetTextFieldSecure(WMTextField *tPtr, Bool flag);
extern char *WMListDidScrollNotification;
extern char *WMTextDidChangeNotification; extern char *WMTextDidChangeNotification;
extern char *WMTextDidBeginEditingNotification; extern char *WMTextDidBeginEditingNotification;
extern char *WMTextDidEndEditingNotification; extern char *WMTextDidEndEditingNotification;
@@ -782,6 +787,8 @@ void WMSetListUserDrawProc(WMList *lPtr, WMListDrawProc *proc);
void WMSetListUserDrawItemHeight(WMList *lPtr, unsigned short height); void WMSetListUserDrawItemHeight(WMList *lPtr, unsigned short height);
int WMGetListItemHeight(WMList *lPtr);
/* don't free the returned data */ /* don't free the returned data */
WMListItem *WMGetListSelectedItem(WMList *lPtr); WMListItem *WMGetListSelectedItem(WMList *lPtr);
@@ -801,6 +808,8 @@ void WMSetListBottomPosition(WMList *lPtr, int row);
int WMGetListPosition(WMList *lPtr); int WMGetListPosition(WMList *lPtr);
extern char *WMListDidScrollNotification;
/* ....................................................................... */ /* ....................................................................... */
WMBrowser *WMCreateBrowser(WMWidget *parent); WMBrowser *WMCreateBrowser(WMWidget *parent);
@@ -876,6 +885,8 @@ char *WMGetPopUpButtonItem(WMPopUpButton *bPtr, int index);
int WMGetPopUpButtonNumberOfItems(WMPopUpButton *bPtr); int WMGetPopUpButtonNumberOfItems(WMPopUpButton *bPtr);
void WMSetPopUpButtonEnabled(WMPopUpButton *bPtr, Bool flag);
/* ....................................................................... */ /* ....................................................................... */
WMColorWell *WMCreateColorWell(WMWidget *parent); WMColorWell *WMCreateColorWell(WMWidget *parent);
@@ -884,6 +895,8 @@ void WMSetColorWellColor(WMColorWell *cPtr, WMColor *color);
WMColor *WMGetColorWellColor(WMColorWell *cPtr); WMColor *WMGetColorWellColor(WMColorWell *cPtr);
void WSetColorWellBordered(WMColorWell *cPtr, Bool flag);
/* ...................................................................... */ /* ...................................................................... */
WMScrollView *WMCreateScrollView(WMWidget *parent); WMScrollView *WMCreateScrollView(WMWidget *parent);
@@ -929,6 +942,10 @@ void WMSetSliderContinuous(WMSlider *slider, Bool flag);
void WMSetSliderAction(WMSlider *slider, WMAction *action, void *data); void WMSetSliderAction(WMSlider *slider, WMAction *action, void *data);
void WMSetSliderKnobThickness(WMSlider *sPtr, int thickness);
void WMSetSliderImage(WMSlider *sPtr, WMPixmap *pixmap);
/* ....................................................................... */ /* ....................................................................... */
/* only supports 2 subviews */ /* only supports 2 subviews */
@@ -995,6 +1012,11 @@ int WMRunModalOpenPanelForDirectory(WMFilePanel *panel, WMWindow *owner,
int WMRunModalSavePanelForDirectory(WMFilePanel *panel, WMWindow *owner, int WMRunModalSavePanelForDirectory(WMFilePanel *panel, WMWindow *owner,
char *path, char *name); char *path, char *name);
void WMSetFilePanelAccessoryView(WMFilePanel *panel, WMView *view);
WMView *WMGetFilePanelAccessoryView(WMFilePanel *panel);
/* ...................................................................... */ /* ...................................................................... */
/* only 1 instance per WMScreen */ /* only 1 instance per WMScreen */

View File

@@ -6,7 +6,7 @@
#include "WINGs.h" #include "WINGs.h"
#include "WUtil.h" #include "WUtil.h"
#if WINGS_H_VERSION < 980930 #if WINGS_H_VERSION < 981220
#error There_is_an_old_WINGs.h_file_somewhere_in_your_system._Please_remove_it. #error There_is_an_old_WINGs.h_file_somewhere_in_your_system._Please_remove_it.
#endif #endif
@@ -174,6 +174,8 @@ typedef struct W_Screen {
struct W_Pixmap *pullDownIndicator; struct W_Pixmap *pullDownIndicator;
struct W_Pixmap *popUpIndicator; struct W_Pixmap *popUpIndicator;
struct W_Pixmap *checkMark;
struct W_Pixmap *homeIcon; struct W_Pixmap *homeIcon;
struct W_Pixmap *defaultObjectIcon; struct W_Pixmap *defaultObjectIcon;
@@ -308,7 +310,8 @@ _WINGsConfiguration WINGsConfiguration;
#define W_FONTID(f) (f)->font->fid #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); W_View *W_GetViewForXWindow(Display *display, Window window);

View File

@@ -29,6 +29,37 @@
#endif #endif
#if (!defined (__GNUC__) || __GNUC__ < 2 || \
__GNUC_MINOR__ < (defined (__cplusplus) ? 6 : 4))
#define __ASSERT_FUNCTION ((__const char *) 0)
#else
#define __ASSERT_FUNCTION __PRETTY_FUNCTION__
#endif
#ifdef NDEBUG
#define wassertr(expr, val) ((void)0)
#else /* !NDEBUG */
#define wassertr(expr) \
if (!(expr)) { \
wwarning("%s line %i (%s): assertion %s failed",\
__FILE__, __LINE__, __ASSERT_FUNCTION, #expr);\
return;\
}
#define wassertrv(expr, val) \
if (!(expr)) { \
wwarning("%s line %i (%s): assertion %s failed",\
__FILE__, __LINE__, __ASSERT_FUNCTION, #expr);\
return (val);\
}
#endif /* !NDEBUG */
typedef enum { typedef enum {
WMPostWhenIdle = 1, WMPostWhenIdle = 1,

View File

@@ -189,12 +189,12 @@ wfindfile(char *paths, char *file)
return NULL; return NULL;
if (*file=='/' || *file=='~' || *file=='$' || !paths) { if (*file=='/' || *file=='~' || *file=='$' || !paths) {
if (access(file, R_OK)<0) { if (access(file, F_OK)<0) {
fullpath = wexpandpath(file); fullpath = wexpandpath(file);
if (!fullpath) if (!fullpath)
return NULL; return NULL;
if (access(fullpath, R_OK)<0) { if (access(fullpath, F_OK)<0) {
free(fullpath); free(fullpath);
return NULL; return NULL;
} else { } else {
@@ -219,7 +219,7 @@ wfindfile(char *paths, char *file)
fullpath = wexpandpath(path); fullpath = wexpandpath(path);
free(path); free(path);
if (fullpath) { if (fullpath) {
if (access(fullpath, R_OK)==0) { if (access(fullpath, F_OK)==0) {
return fullpath; return fullpath;
} }
free(fullpath); free(fullpath);
@@ -243,12 +243,12 @@ wfindfileinlist(char **path_list, char *file)
return NULL; return NULL;
if (*file=='/' || *file=='~' || !path_list) { if (*file=='/' || *file=='~' || !path_list) {
if (access(file, R_OK)<0) { if (access(file, F_OK)<0) {
fullpath = wexpandpath(file); fullpath = wexpandpath(file);
if (!fullpath) if (!fullpath)
return NULL; return NULL;
if (access(fullpath, R_OK)<0) { if (access(fullpath, F_OK)<0) {
free(fullpath); free(fullpath);
return NULL; return NULL;
} else { } else {
@@ -271,8 +271,8 @@ wfindfileinlist(char **path_list, char *file)
fullpath = wexpandpath(path); fullpath = wexpandpath(path);
free(path); free(path);
if (fullpath) { if (fullpath) {
/* check if file is readable */ /* check if file exists */
if (access(fullpath, R_OK)==0) { if (access(fullpath, F_OK)==0) {
return fullpath; return fullpath;
} }
free(fullpath); free(fullpath);

View File

@@ -23,8 +23,6 @@
extern void W_ReadConfigurations(void);
extern void W_InitNotificationCenter(void); extern void W_InitNotificationCenter(void);
@@ -72,9 +70,6 @@ WMInitializeApplication(char *applicationName, int *argc, char **argv)
/* initialize notification center */ /* initialize notification center */
W_InitNotificationCenter(); W_InitNotificationCenter();
/* read general configuration data for WINGs */
W_ReadConfigurations();
} }

View File

@@ -72,8 +72,8 @@ static void setupScroller(WMBrowser *bPtr);
static void scrollToColumn(WMBrowser *bPtr, int column); static void scrollToColumn(WMBrowser *bPtr, int column);
static void paintItem(WMList *lPtr, Drawable d, char *text, int state, static void paintItem(WMList *lPtr, int index, Drawable d, char *text,
WMRect *rect); int state, WMRect *rect);
static void loadColumn(WMBrowser *bPtr, int column); static void loadColumn(WMBrowser *bPtr, int column);
@@ -189,7 +189,7 @@ drawTitleOfColumn(WMBrowser *bPtr, int column)
if (column < bPtr->usedColumnCount && bPtr->titles[column]) if (column < bPtr->usedColumnCount && bPtr->titles[column])
W_PaintText(bPtr->view, bPtr->view->window, scr->boldFont, x, W_PaintText(bPtr->view, bPtr->view->window, scr->boldFont, x,
(bPtr->titleHeight-scr->boldFont->height)/2, (bPtr->titleHeight-WMFontHeight(scr->boldFont))/2,
bPtr->columnSize.width, WACenter, W_GC(scr->white), bPtr->columnSize.width, WACenter, W_GC(scr->white),
False, bPtr->titles[column], strlen(bPtr->titles[column])); False, bPtr->titles[column], strlen(bPtr->titles[column]));
} }
@@ -248,6 +248,23 @@ removeColumn(WMBrowser *bPtr, int column)
if (column < bPtr->maxVisibleColumns) { if (column < bPtr->maxVisibleColumns) {
int tmp; int tmp;
#if 1
int limit;
if(bPtr->usedColumnCount < bPtr->maxVisibleColumns)
limit = bPtr->usedColumnCount;
else
limit = bPtr->maxVisibleColumns;
for (i=column; i < limit; i++) {
if (bPtr->titles[i])
free(bPtr->titles[i]);
bPtr->titles[i] = NULL;
WMClearList(bPtr->columns[i]);
bPtr->usedColumnCount--;
}
#else
for (i=column; i < bPtr->maxVisibleColumns; i++) { for (i=column; i < bPtr->maxVisibleColumns; i++) {
if (bPtr->titles[i]) if (bPtr->titles[i])
free(bPtr->titles[i]); free(bPtr->titles[i]);
@@ -267,6 +284,7 @@ removeColumn(WMBrowser *bPtr, int column)
bPtr->columnCount--; bPtr->columnCount--;
bPtr->usedColumnCount--; bPtr->usedColumnCount--;
} }
#endif
} else { } else {
int tmp = bPtr->columnCount; int tmp = bPtr->columnCount;
for (i=column; i < tmp; i++) { for (i=column; i < tmp; i++) {
@@ -443,7 +461,8 @@ resizeBrowser(WMWidget *w, unsigned int width, unsigned int height)
static void static void
paintItem(WMList *lPtr, Drawable d, char *text, int state, WMRect *rect) paintItem(WMList *lPtr, int index, Drawable d, char *text, int state,
WMRect *rect)
{ {
WMView *view = W_VIEW(lPtr); WMView *view = W_VIEW(lPtr);
W_Screen *scr = view->screen; W_Screen *scr = view->screen;

View File

@@ -29,9 +29,9 @@ static void destroyColorWell(ColorWell *cPtr);
static void paintColorWell(ColorWell *cPtr); static void paintColorWell(ColorWell *cPtr);
static void handleEvents(XEvent *event, void *data); static void handleEvents(XEvent *event, void *data);
#if 0
static void handleDragEvents(XEvent *event, void *data); static void handleDragEvents(XEvent *event, void *data);
#endif
static void handleActionEvents(XEvent *event, void *data); static void handleActionEvents(XEvent *event, void *data);
static void resizeColorWell(); static void resizeColorWell();
@@ -73,6 +73,7 @@ WMCreateColorWell(WMWidget *parent)
free(cPtr); free(cPtr);
return NULL; return NULL;
} }
cPtr->view->self = cPtr;
cPtr->colorView = W_CreateView(cPtr->view); cPtr->colorView = W_CreateView(cPtr->view);
if (!cPtr->colorView) { if (!cPtr->colorView) {
@@ -80,20 +81,23 @@ WMCreateColorWell(WMWidget *parent)
free(cPtr); free(cPtr);
return NULL; return NULL;
} }
cPtr->colorView->self = cPtr;
WMCreateEventHandler(cPtr->view, ExposureMask|StructureNotifyMask WMCreateEventHandler(cPtr->view, ExposureMask|StructureNotifyMask
|ClientMessageMask, handleEvents, cPtr); |ClientMessageMask, handleEvents, cPtr);
WMCreateEventHandler(cPtr->colorView, ExposureMask, handleEvents, cPtr); WMCreateEventHandler(cPtr->colorView, ExposureMask, handleEvents, cPtr);
#if 0
WMCreateEventHandler(cPtr->colorView, ButtonPressMask|Button1MotionMask, WMCreateEventHandler(cPtr->colorView, ButtonPressMask|ButtonMotionMask
handleDragEvents, cPtr); |EnterWindowMask, handleDragEvents, cPtr);
#endif
WMCreateEventHandler(cPtr->view, ButtonPressMask, handleActionEvents, WMCreateEventHandler(cPtr->view, ButtonPressMask, handleActionEvents,
cPtr); cPtr);
cPtr->colorView->flags.mapWhenRealized = 1; cPtr->colorView->flags.mapWhenRealized = 1;
cPtr->flags.bordered = 1;
resizeColorWell(cPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); resizeColorWell(cPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT);
return cPtr; return cPtr;
@@ -119,6 +123,17 @@ WMGetColorWellColor(WMColorWell *cPtr)
return cPtr->color; return cPtr->color;
} }
void
WSetColorWellBordered(WMColorWell *cPtr, Bool flag)
{
if (cPtr->flags.bordered != flag) {
cPtr->flags.bordered = flag;
resizeColorWell(cPtr, cPtr->view->size.width, cPtr->view->size.height);
}
}
#define MIN(a,b) ((a) > (b) ? (b) : (a)) #define MIN(a,b) ((a) > (b) ? (b) : (a))
static void static void
@@ -126,6 +141,8 @@ resizeColorWell(WMColorWell *cPtr, unsigned int width, unsigned int height)
{ {
int bw; int bw;
if (cPtr->flags.bordered) {
if (width < MIN_WIDTH) if (width < MIN_WIDTH)
width = MIN_WIDTH; width = MIN_WIDTH;
if (height < MIN_HEIGHT) if (height < MIN_HEIGHT)
@@ -139,6 +156,13 @@ resizeColorWell(WMColorWell *cPtr, unsigned int width, unsigned int height)
if (cPtr->colorView->pos.x!=bw || cPtr->colorView->pos.y!=bw) if (cPtr->colorView->pos.x!=bw || cPtr->colorView->pos.y!=bw)
W_MoveView(cPtr->colorView, bw, bw); W_MoveView(cPtr->colorView, bw, bw);
} else {
W_ResizeView(cPtr->view, width, height);
W_ResizeView(cPtr->colorView, width, height);
W_MoveView(cPtr->colorView, 0, 0);
}
} }
@@ -184,7 +208,7 @@ handleEvents(XEvent *event, void *data)
} }
} }
#if 0
static WMPixmap* static WMPixmap*
makeDragPixmap(WMColorWell *cPtr) makeDragPixmap(WMColorWell *cPtr)
{ {
@@ -201,6 +225,116 @@ makeDragPixmap(WMColorWell *cPtr)
} }
static void
slideView(WMView *view, int srcX, int srcY, int dstX, int dstY)
{
double x, y, dx, dy;
int i;
srcX -= 8;
srcY -= 8;
dstX -= 8;
dstY -= 8;
x = srcX;
y = srcY;
dx = (double)(dstX-srcX)/20.0;
dy = (double)(dstY-srcY)/20.0;
for (i = 0; i < 20; i++) {
W_MoveView(view, x, y);
XFlush(view->screen->display);
x += dx;
y += dy;
}
}
static void
dragColor(ColorWell *cPtr, XEvent *event, WMPixmap *image)
{
WMView *dragView;
WMScreen *scr = cPtr->view->screen;
Display *dpy = scr->display;
XColor black = {0, 0,0,0, DoRed|DoGreen|DoBlue};
XColor green = {0, 0x4500,0xb000,0x4500, DoRed|DoGreen|DoBlue};
XColor back = {0, 0xffff,0xffff,0xffff, DoRed|DoGreen|DoBlue};
Bool done = False;
WMColorWell *activeWell = NULL;
dragView = W_CreateTopView(scr);
W_ResizeView(dragView, 16, 16);
dragView->attribFlags |= CWOverrideRedirect | CWSaveUnder;
dragView->attribs.event_mask = StructureNotifyMask;
dragView->attribs.override_redirect = True;
dragView->attribs.save_under = True;
W_MoveView(dragView, event->xmotion.x_root-8, event->xmotion.y_root-8);
W_RealizeView(dragView);
W_MapView(dragView);
XSetWindowBackgroundPixmap(dpy, dragView->window, WMGetPixmapXID(image));
XClearWindow(dpy, dragView->window);
XGrabPointer(dpy, dragView->window, True,
ButtonMotionMask|ButtonReleaseMask|EnterWindowMask,
GrabModeSync, GrabModeAsync,
scr->rootWin, scr->defaultCursor, CurrentTime);
while (!done) {
XEvent ev;
WMView *view;
XAllowEvents(dpy, SyncPointer, CurrentTime);
WMNextEvent(dpy, &ev);
switch (ev.type) {
case ButtonRelease:
if (activeWell != NULL) {
WMSetColorWellColor(activeWell, cPtr->color);
} else {
slideView(dragView, ev.xbutton.x_root, ev.xbutton.y_root,
event->xmotion.x_root, event->xmotion.y_root);
}
done = True;
break;
case EnterNotify:
view = W_GetViewForXWindow(dpy, ev.xcrossing.window);
if (view && view->self && W_CLASS(view->self) == WC_ColorWell
&& view->self != activeWell && view->self != cPtr) {
activeWell = view->self;
XRecolorCursor(dpy, scr->defaultCursor, &green, &back);
} else if (view->self!=NULL && view->self != activeWell) {
XRecolorCursor(dpy, scr->defaultCursor, &black, &back);
activeWell = NULL;
}
break;
case MotionNotify:
W_MoveView(dragView, ev.xmotion.x_root-8, ev.xmotion.y_root-8);
break;
default:
WMHandleEvent(&ev);
break;
}
}
XUngrabPointer(dpy, CurrentTime);
XRecolorCursor(dpy, scr->defaultCursor, &black, &back);
W_DestroyView(dragView);
}
static void static void
handleDragEvents(XEvent *event, void *data) handleDragEvents(XEvent *event, void *data)
@@ -226,8 +360,12 @@ handleDragEvents(XEvent *event, void *data)
offs.height = 2; offs.height = 2;
pixmap = makeDragPixmap(cPtr); pixmap = makeDragPixmap(cPtr);
/*
WMDragImageFromView(cPtr->view, pixmap, cPtr->view->pos, WMDragImageFromView(cPtr->view, pixmap, cPtr->view->pos,
offs, event, True); offs, event, True);
* */
dragColor(cPtr, event, pixmap);
WMReleasePixmap(pixmap); WMReleasePixmap(pixmap);
} }
@@ -235,7 +373,7 @@ handleDragEvents(XEvent *event, void *data)
break; break;
} }
} }
#endif
static void static void

View File

@@ -11,6 +11,11 @@
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
#ifdef HAVE_POLL_H
#include <poll.h>
#endif
#ifdef HAVE_SYS_SELECT_H #ifdef HAVE_SYS_SELECT_H
# include <sys/select.h> # include <sys/select.h>
#endif #endif
@@ -708,9 +713,93 @@ WMIsDoubleClick(XEvent *event)
Bool Bool
W_WaitForEvent(Display *dpy, unsigned long xeventmask) W_WaitForEvent(Display *dpy, unsigned long xeventmask)
{ {
#ifndef HAVE_SELECT #if defined(HAVE_POLL) && defined(HAVE_POLL_H) && !defined(HAVE_SELECT)
#error This_system_does_not_have_select(2)_and_is_not_supported struct pollfd *fds;
InputHandler *handler;
int count, timeout, nfds, k, retval;
for (nfds = 1, handler = inputHandler;
handler != 0; handler = handler->next) nfds++;
fds = wmalloc(nfds * sizeof(struct pollfd));
fds[0].fd = ConnectionNumber(dpy);
fds[0].events = POLLIN;
for (k = 1, handler = inputHandler;
handler;
handler = handler->next, k++) {
fds[k].fd = handler->fd;
fds[k].events = 0;
if (handler->mask & WIReadMask)
fds[k].events |= POLLIN;
if (handler->mask & WIWriteMask)
fds[k].events |= POLLOUT;
#if 0 /* FIXME */
if (handler->mask & WIExceptMask)
FD_SET(handler->fd, &eset);
#endif #endif
}
/*
* Setup the select() timeout to the estimated time until the
* next timer expires.
*/
if (timerPending()) {
struct timeval tv;
delayUntilNextTimerEvent(&tv);
timeout = tv.tv_sec * 1000 + tv.tv_usec / 1000;
} else {
timeout = -1;
}
if (xeventmask==0) {
if (XPending(dpy))
return True;
} else {
XEvent ev;
if (XCheckMaskEvent(dpy, xeventmask, &ev)) {
XPutBackEvent(dpy, &ev);
return True;
}
}
count = poll(fds, nfds, timeout);
if (count > 0) {
handler = inputHandler;
k = 1;
while (handler) {
int mask;
mask = 0;
if (fds[k].revents & (POLLIN|POLLRDNORM|POLLRDBAND|POLLPRI))
mask |= WIReadMask;
if (fds[k].revents & (POLLOUT | POLLWRBAND))
mask |= WIWriteMask;
if (fds[k].revents & (POLLHUP | POLLNVAL | POLLERR))
mask |= WIExceptMask;
if (mask!=0 && handler->callback) {
(*handler->callback)(handler->fd, mask,
handler->clientData);
}
handler = handler->next;
k++;
}
}
retval = fds[0].revents & (POLLIN|POLLRDNORM|POLLRDBAND|POLLPRI);
free(fds);
return retval;
#else /* not HAVE_POLL */
#ifdef HAVE_SELECT
struct timeval timeout; struct timeval timeout;
struct timeval *timeoutPtr; struct timeval *timeoutPtr;
fd_set rset, wset, eset; fd_set rset, wset, eset;
@@ -764,7 +853,7 @@ W_WaitForEvent(Display *dpy, unsigned long xeventmask)
return True; return True;
} }
} }
/* TODO: port to poll() */
count = select(1 + maxfd, &rset, &wset, &eset, timeoutPtr); count = select(1 + maxfd, &rset, &wset, &eset, timeoutPtr);
if (count > 0) { if (count > 0) {
@@ -794,10 +883,12 @@ W_WaitForEvent(Display *dpy, unsigned long xeventmask)
} }
return FD_ISSET(ConnectionNumber(dpy), &rset); return FD_ISSET(ConnectionNumber(dpy), &rset);
#else /* not HAVE_SELECT, not HAVE_POLL */
Neither select nor poll. You lose.
#endif /* HAVE_SELECT */
#endif /* HAVE_POLL */
} }
void void
WMNextEvent(Display *dpy, XEvent *event) WMNextEvent(Display *dpy, XEvent *event)
{ {

View File

@@ -30,6 +30,8 @@ typedef struct W_FilePanel {
WMButton *homeButton; WMButton *homeButton;
WMView *accessoryView;
WMTextField *fileField; WMTextField *fileField;
char **fileTypes; char **fileTypes;
@@ -358,6 +360,28 @@ WMGetFilePanelFileName(WMFilePanel *panel)
} }
void
WMSetFilePanelAccessoryView(WMFilePanel *panel, WMView *view)
{
WMView *v;
panel->accessoryView = view;
v = WMWidgetView(panel->win);
W_ReparentView(view, v);
W_MoveView(view, (v->size.width - v->size.width)/2, 300);
}
WMView*
WMGetFilePanelAccessoryView(WMFilePanel *panel)
{
return panel->accessoryView;
}
static char* static char*
get_name_from_path(char *path) get_name_from_path(char *path)
{ {
@@ -564,3 +588,5 @@ buttonClick(WMButton *bPtr, WMFilePanel *panel)
panel->flags.done = 1; panel->flags.done = 1;
} }

View File

@@ -91,7 +91,7 @@ WMCreateFontInDefaultEncoding(WMScreen *scrPtr, char *fontName)
WMFont* WMFont*
WMRetainFont(WMFont *font) WMRetainFont(WMFont *font)
{ {
assert(font!=NULL); wassertrv(font!=NULL, NULL);
font->refCount++; font->refCount++;
@@ -102,7 +102,8 @@ WMRetainFont(WMFont *font)
void void
WMReleaseFont(WMFont *font) WMReleaseFont(WMFont *font)
{ {
assert(font!=NULL); wassertr(font!=NULL);
font->refCount--; font->refCount--;
if (font->refCount < 1) { if (font->refCount < 1) {
if (font->notFontSet) if (font->notFontSet)
@@ -118,7 +119,7 @@ WMReleaseFont(WMFont *font)
unsigned int unsigned int
WMFontHeight(WMFont *font) WMFontHeight(WMFont *font)
{ {
assert(font!=NULL); wassertrv(font!=NULL, 0);
return font->height; return font->height;
} }
@@ -179,6 +180,8 @@ WMBoldSystemFontOfSize(WMScreen *scrPtr, int size)
XFontSet XFontSet
WMGetFontFontSet(WMFont *font) WMGetFontFontSet(WMFont *font)
{ {
wassertrv(font!=NULL, NULL);
if (font->notFontSet) if (font->notFontSet)
return NULL; return NULL;
else else
@@ -189,8 +192,8 @@ WMGetFontFontSet(WMFont *font)
int int
WMWidthOfString(WMFont *font, char *text, int length) WMWidthOfString(WMFont *font, char *text, int length)
{ {
assert(font!=NULL); wassertrv(font!=NULL, 0);
assert(text!=NULL); wassertrv(text!=NULL, 0);
if (font->notFontSet) if (font->notFontSet)
return XTextWidth(font->font.normal, text, length); return XTextWidth(font->font.normal, text, length);
@@ -210,6 +213,8 @@ void
WMDrawString(WMScreen *scr, Drawable d, GC gc, WMFont *font, int x, int y, WMDrawString(WMScreen *scr, Drawable d, GC gc, WMFont *font, int x, int y,
char *text, int length) char *text, int length)
{ {
wassertr(font!=NULL);
if (font->notFontSet) { if (font->notFontSet) {
XSetFont(scr->display, gc, font->font.normal->fid); XSetFont(scr->display, gc, font->font.normal->fid);
XDrawString(scr->display, d, gc, x, y + font->y, text, length); XDrawString(scr->display, d, gc, x, y + font->y, text, length);
@@ -224,6 +229,8 @@ void
WMDrawImageString(WMScreen *scr, Drawable d, GC gc, WMFont *font, int x, int y, WMDrawImageString(WMScreen *scr, Drawable d, GC gc, WMFont *font, int x, int y,
char *text, int length) char *text, int length)
{ {
wassertr(font != NULL);
if (font->notFontSet) { if (font->notFontSet) {
XSetFont(scr->display, gc, font->font.normal->fid); XSetFont(scr->display, gc, font->font.normal->fid);
XDrawImageString(scr->display, d, gc, x, y + font->y, text, length); XDrawImageString(scr->display, d, gc, x, y + font->y, text, length);

View File

@@ -82,7 +82,7 @@ paintFrame(Frame *fPtr)
int fy, fh; int fy, fh;
if (fPtr->caption!=NULL) if (fPtr->caption!=NULL)
th = scrPtr->normalFont->height; th = WMFontHeight(scrPtr->normalFont);
else { else {
th = 0; th = 0;
} }

View File

@@ -281,12 +281,30 @@ static char *PULLDOWN_INDICATOR[] = {
#define PULLDOWN_INDICATOR_HEIGHT 7 #define PULLDOWN_INDICATOR_HEIGHT 7
#define CHECK_MARK_WIDTH 8
#define CHECK_MARK_HEIGHT 10
static char *CHECK_MARK[] = {
"======== ",
"======= #",
"====== #%",
"===== #%=",
" #== #%==",
" #% #%===",
" % #%====",
" #%=====",
" #%======",
"#%======="};
#define STIPPLE_WIDTH 8 #define STIPPLE_WIDTH 8
#define STIPPLE_HEIGHT 8 #define STIPPLE_HEIGHT 8
static unsigned char STIPPLE_BITS[] = { static unsigned char STIPPLE_BITS[] = {
0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa}; 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa};
extern void W_ReadConfigurations(void);
extern W_ViewProcedureTable _WindowViewProcedures; extern W_ViewProcedureTable _WindowViewProcedures;
extern W_ViewProcedureTable _FrameViewProcedures; extern W_ViewProcedureTable _FrameViewProcedures;
@@ -489,6 +507,8 @@ WMCreateScreenWithRContext(Display *display, int screen, RContext *context)
initProcedureTable(); initProcedureTable();
W_ReadConfigurations();
assert(W_ApplicationInitialized()); assert(W_ApplicationInitialized());
} }
@@ -567,6 +587,16 @@ WMCreateScreenWithRContext(Display *display, int screen, RContext *context)
scrPtr->boldFont = WMBoldSystemFontOfSize(scrPtr, 12); scrPtr->boldFont = WMBoldSystemFontOfSize(scrPtr, 12);
if (!scrPtr->boldFont)
scrPtr->boldFont = scrPtr->normalFont;
if (!scrPtr->normalFont) {
wwarning("could not load any fonts. Make sure your font installation"
"and locale settings are correct.");
return NULL;
}
scrPtr->checkButtonImageOn = makePixmap(scrPtr, CHECK_BUTTON_ON, scrPtr->checkButtonImageOn = makePixmap(scrPtr, CHECK_BUTTON_ON,
CHECK_BUTTON_ON_WIDTH, CHECK_BUTTON_ON_WIDTH,
CHECK_BUTTON_ON_HEIGHT, False); CHECK_BUTTON_ON_HEIGHT, False);
@@ -636,6 +666,11 @@ WMCreateScreenWithRContext(Display *display, int screen, RContext *context)
scrPtr->pullDownIndicator = makePixmap(scrPtr, PULLDOWN_INDICATOR, scrPtr->pullDownIndicator = makePixmap(scrPtr, PULLDOWN_INDICATOR,
PULLDOWN_INDICATOR_WIDTH, PULLDOWN_INDICATOR_WIDTH,
PULLDOWN_INDICATOR_HEIGHT, True); PULLDOWN_INDICATOR_HEIGHT, True);
scrPtr->checkMark = makePixmap(scrPtr, CHECK_MARK,
CHECK_MARK_WIDTH,
CHECK_MARK_HEIGHT, True);
loadPixmaps(scrPtr); loadPixmaps(scrPtr);
scrPtr->defaultCursor = XCreateFontCursor(display, XC_left_ptr); scrPtr->defaultCursor = XCreateFontCursor(display, XC_left_ptr);

View File

@@ -99,6 +99,13 @@ WMSetLabelImage(WMLabel *lPtr, WMPixmap *image)
} }
WMPixmap*
WMGetLabelImage(WMLabel *lPtr)
{
return lPtr->image;
}
void void
WMSetLabelImagePosition(WMLabel *lPtr, WMImagePosition position) WMSetLabelImagePosition(WMLabel *lPtr, WMImagePosition position)
{ {

View File

@@ -4,6 +4,8 @@
#include "WINGsP.h" #include "WINGsP.h"
char *WMListDidScrollNotification = "WMListDidScrollNotification";
typedef struct W_List { typedef struct W_List {
W_Class widgetClass; W_Class widgetClass;
@@ -99,7 +101,7 @@ WMCreateList(WMWidget *parent)
|EnterWindowMask|LeaveWindowMask|ButtonMotionMask, |EnterWindowMask|LeaveWindowMask|ButtonMotionMask,
handleActionEvents, lPtr); handleActionEvents, lPtr);
lPtr->itemHeight = scrPtr->normalFont->height + 1; lPtr->itemHeight = WMFontHeight(scrPtr->normalFont) + 1;
/* create the vertical scroller */ /* create the vertical scroller */
lPtr->vScroller = WMCreateScroller(lPtr); lPtr->vScroller = WMCreateScroller(lPtr);
@@ -224,6 +226,7 @@ WMRemoveListItem(WMList *lPtr, int row)
{ {
WMListItem *llist; WMListItem *llist;
WMListItem *tmp; WMListItem *tmp;
int topItem = lPtr->topItem;
CHECK_CLASS(lPtr, WC_List); CHECK_CLASS(lPtr, WC_List);
@@ -266,6 +269,8 @@ WMRemoveListItem(WMList *lPtr, int row)
if (!lPtr->idleID) { if (!lPtr->idleID) {
lPtr->idleID = WMAddIdleHandler((WMCallback*)updateScroller, lPtr); lPtr->idleID = WMAddIdleHandler((WMCallback*)updateScroller, lPtr);
} }
if (lPtr->topItem != topItem)
WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL);
} }
@@ -370,6 +375,13 @@ WMGetListSelectedItemRow(WMList *lPtr)
} }
int
WMGetListItemHeight(WMList *lPtr)
{
return lPtr->itemHeight;
}
void void
WMSetListPosition(WMList *lPtr, int row) WMSetListPosition(WMList *lPtr, int row)
{ {
@@ -417,6 +429,7 @@ vScrollCallBack(WMWidget *scroller, void *self)
WMList *lPtr = (WMList*)self; WMList *lPtr = (WMList*)self;
WMScroller *sPtr = (WMScroller*)scroller; WMScroller *sPtr = (WMScroller*)scroller;
int height; int height;
int topItem = lPtr->topItem;
height = lPtr->view->size.height - 4; height = lPtr->view->size.height - 4;
@@ -476,6 +489,9 @@ vScrollCallBack(WMWidget *scroller, void *self)
/* do nothing */ /* do nothing */
break; break;
} }
if (lPtr->topItem != topItem)
WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL);
} }
@@ -516,8 +532,8 @@ paintItem(List *lPtr, int index)
flags |= WLDSIsBranch; flags |= WLDSIsBranch;
if (lPtr->draw) if (lPtr->draw)
(*lPtr->draw)(lPtr, view->window, itemPtr->text, flags, &rect); (*lPtr->draw)(lPtr, index, view->window, itemPtr->text, flags,
&rect);
} else { } else {
if (itemPtr->selected) if (itemPtr->selected)
XFillRectangle(scr->display, view->window, W_GC(scr->white), x, y, XFillRectangle(scr->display, view->window, W_GC(scr->white), x, y,
@@ -706,6 +722,7 @@ handleActionEvents(XEvent *event, void *data)
{ {
List *lPtr = (List*)data; List *lPtr = (List*)data;
int tmp; int tmp;
int topItem = lPtr->topItem;
CHECK_CLASS(data, WC_List); CHECK_CLASS(data, WC_List);
@@ -713,15 +730,12 @@ handleActionEvents(XEvent *event, void *data)
case ButtonRelease: case ButtonRelease:
lPtr->flags.buttonPressed = 0; lPtr->flags.buttonPressed = 0;
tmp = getItemIndexAt(lPtr, event->xbutton.y); tmp = getItemIndexAt(lPtr, event->xbutton.y);
if (tmp == lPtr->selectedItem && tmp >= 0) { if (tmp == lPtr->selectedItem && tmp >= 0) {
if (WMIsDoubleClick(event)) {
if (lPtr->doubleAction)
(*lPtr->doubleAction)(lPtr, lPtr->doubleClientData);
} else {
if (lPtr->action) if (lPtr->action)
(*lPtr->action)(lPtr, lPtr->clientData); (*lPtr->action)(lPtr, lPtr->clientData);
} }
}
break; break;
case EnterNotify: case EnterNotify:
@@ -743,6 +757,11 @@ handleActionEvents(XEvent *event, void *data)
lPtr->selectedItem = tmp; lPtr->selectedItem = tmp;
} }
lPtr->flags.buttonPressed = 1; lPtr->flags.buttonPressed = 1;
if (WMIsDoubleClick(event)) {
if (lPtr->doubleAction)
(*lPtr->doubleAction)(lPtr, lPtr->doubleClientData);
}
} }
break; break;
@@ -756,6 +775,8 @@ handleActionEvents(XEvent *event, void *data)
} }
break; break;
} }
if (lPtr->topItem != topItem)
WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL);
} }

View File

@@ -72,7 +72,7 @@ W_DrawRelief(W_Screen *scr, Drawable d, int x, int y, unsigned int width,
XDrawLine(dpy, d, bgc, x+width-1, y, x+width-1, y+height-1); XDrawLine(dpy, d, bgc, x+width-1, y, x+width-1, y+height-1);
if (height > 2 && relief!=WRPushed) { if (height > 2 && relief!=WRPushed) {
XDrawLine(dpy, d, dgc, x+width-2, y+2, x+width-2, y+height-3); XDrawLine(dpy, d, dgc, x+width-2, y+1, x+width-2, y+height-2);
} }
} }
@@ -116,12 +116,13 @@ W_GetTextHeight(WMFont *font, char *text, int width, int wrap)
int count; int count;
int length = strlen(text); int length = strlen(text);
int h; int h;
int fheight = WMFontHeight(font);
h = 0; h = 0;
while (length > 0) { while (length > 0) {
count = fitText(ptr, font, width, wrap); count = fitText(ptr, font, width, wrap);
h += font->height; h += fheight;
if (isspace(ptr[count])) if (isspace(ptr[count]))
count++; count++;
@@ -142,6 +143,7 @@ W_PaintText(W_View *view, Drawable d, WMFont *font, int x, int y,
int line_width; int line_width;
int line_x; int line_x;
int count; int count;
int fheight = WMFontHeight(font);
while (length > 0) { while (length > 0) {
count = fitText(ptr, font, width, wrap); count = fitText(ptr, font, width, wrap);
@@ -156,7 +158,7 @@ W_PaintText(W_View *view, Drawable d, WMFont *font, int x, int y,
WMDrawString(view->screen, d, gc, font, line_x, y, ptr, count); WMDrawString(view->screen, d, gc, font, line_x, y, ptr, count);
y += font->height; y += fheight;
if (isspace(ptr[count])) if (isspace(ptr[count]))
count++; count++;

View File

@@ -113,8 +113,8 @@ WMCreateAlertPanel(WMScreen *scrPtr, WMWindow *owner,
largeFont = WMBoldSystemFontOfSize(scrPtr, 24); largeFont = WMBoldSystemFontOfSize(scrPtr, 24);
panel->tLbl = WMCreateLabel(panel->win); panel->tLbl = WMCreateLabel(panel->win);
WMMoveWidget(panel->tLbl, 80, (80 - largeFont->height)/2); WMMoveWidget(panel->tLbl, 80, (80 - WMFontHeight(largeFont))/2);
WMResizeWidget(panel->tLbl, 400 - 70, largeFont->height+4); WMResizeWidget(panel->tLbl, 400 - 70, WMFontHeight(largeFont)+4);
WMSetLabelText(panel->tLbl, title); WMSetLabelText(panel->tLbl, title);
WMSetLabelTextAlignment(panel->tLbl, WALeft); WMSetLabelTextAlignment(panel->tLbl, WALeft);
WMSetLabelFont(panel->tLbl, largeFont); WMSetLabelFont(panel->tLbl, largeFont);
@@ -126,7 +126,7 @@ WMCreateAlertPanel(WMScreen *scrPtr, WMWindow *owner,
if (msg) { if (msg) {
panel->mLbl = WMCreateLabel(panel->win); panel->mLbl = WMCreateLabel(panel->win);
WMMoveWidget(panel->mLbl, 10, 83); WMMoveWidget(panel->mLbl, 10, 83);
WMResizeWidget(panel->mLbl, 380, scrPtr->normalFont->height*4); WMResizeWidget(panel->mLbl, 380, WMFontHeight(scrPtr->normalFont)*4);
WMSetLabelText(panel->mLbl, msg); WMSetLabelText(panel->mLbl, msg);
WMSetLabelTextAlignment(panel->mLbl, WACenter); WMSetLabelTextAlignment(panel->mLbl, WACenter);
} }
@@ -317,7 +317,7 @@ WMCreateInputPanel(WMScreen *scrPtr, WMWindow *owner, char *title, char *msg,
panel->tLbl = WMCreateLabel(panel->win); panel->tLbl = WMCreateLabel(panel->win);
WMMoveWidget(panel->tLbl, 20, 16); WMMoveWidget(panel->tLbl, 20, 16);
WMResizeWidget(panel->tLbl, 320 - 40, largeFont->height+4); WMResizeWidget(panel->tLbl, 320 - 40, WMFontHeight(largeFont)+4);
WMSetLabelText(panel->tLbl, title); WMSetLabelText(panel->tLbl, title);
WMSetLabelTextAlignment(panel->tLbl, WALeft); WMSetLabelTextAlignment(panel->tLbl, WALeft);
WMSetLabelFont(panel->tLbl, largeFont); WMSetLabelFont(panel->tLbl, largeFont);
@@ -329,7 +329,8 @@ WMCreateInputPanel(WMScreen *scrPtr, WMWindow *owner, char *title, char *msg,
if (msg) { if (msg) {
panel->mLbl = WMCreateLabel(panel->win); panel->mLbl = WMCreateLabel(panel->win);
WMMoveWidget(panel->mLbl, 20, 50); WMMoveWidget(panel->mLbl, 20, 50);
WMResizeWidget(panel->mLbl, 320 - 40,scrPtr->normalFont->height*2); WMResizeWidget(panel->mLbl, 320 - 40,
WMFontHeight(scrPtr->normalFont)*2);
WMSetLabelText(panel->mLbl, msg); WMSetLabelText(panel->mLbl, msg);
WMSetLabelTextAlignment(panel->mLbl, WALeft); WMSetLabelTextAlignment(panel->mLbl, WALeft);
} }

View File

@@ -17,6 +17,8 @@ WMRetainPixmap(WMPixmap *pixmap)
void void
WMReleasePixmap(WMPixmap *pixmap) WMReleasePixmap(WMPixmap *pixmap)
{ {
wassertr(pixmap!=NULL);
pixmap->refCount--; pixmap->refCount--;
if (pixmap->refCount<1) { if (pixmap->refCount<1) {
@@ -139,12 +141,17 @@ WMCreatePixmapFromXPMData(WMScreen *scrPtr, char **data)
Pixmap Pixmap
WMGetPixmapXID(WMPixmap *pixmap) WMGetPixmapXID(WMPixmap *pixmap)
{ {
wassertrv(pixmap != NULL, None);
return pixmap->pixmap; return pixmap->pixmap;
} }
Pixmap Pixmap
WMGetPixmapMaskXID(WMPixmap *pixmap) WMGetPixmapMaskXID(WMPixmap *pixmap)
{ {
wassertrv(pixmap != NULL, None);
return pixmap->mask; return pixmap->mask;
} }
@@ -152,7 +159,9 @@ WMGetPixmapMaskXID(WMPixmap *pixmap)
WMSize WMSize
WMGetPixmapSize(WMPixmap *pixmap) WMGetPixmapSize(WMPixmap *pixmap)
{ {
WMSize size; WMSize size = {0,0};
wassertrv(pixmap != NULL, size);
size.width = pixmap->width; size.width = pixmap->width;
size.height = pixmap->height; size.height = pixmap->height;
@@ -198,8 +207,24 @@ WMGetSystemPixmap(WMScreen *scr, int image)
case WSIHighlightedArrowDown: case WSIHighlightedArrowDown:
return WMRetainPixmap(scr->hiDownArrow); return WMRetainPixmap(scr->hiDownArrow);
case WSICheckMark:
return WMRetainPixmap(scr->checkMark);
default: default:
return NULL; return NULL;
} }
} }
void
WMDrawPixmap(WMPixmap *pixmap, Drawable d, int x, int y)
{
WMScreen *scr = pixmap->screen;
XSetClipMask(scr->display, scr->clipGC, pixmap->mask);
XSetClipOrigin(scr->display, scr->clipGC, x, y);
XCopyArea(scr->display, pixmap->pixmap, d, scr->clipGC, 0, 0,
pixmap->width, pixmap->height, x, y);
}

View File

@@ -10,6 +10,7 @@ typedef struct ItemList {
unsigned int disabled:1; unsigned int disabled:1;
} ItemList; } ItemList;
typedef struct W_PopUpButton { typedef struct W_PopUpButton {
W_Class widgetClass; W_Class widgetClass;
WMView *view; WMView *view;
@@ -30,12 +31,20 @@ typedef struct W_PopUpButton {
WMView *menuView; /* override redirect popup menu */ WMView *menuView; /* override redirect popup menu */
WMHandlerID timer; /* for autoscroll */
/**/
int scrollStartY; /* for autoscroll */
struct { struct {
unsigned int pullsDown:1; unsigned int pullsDown:1;
unsigned int configured:1; unsigned int configured:1;
unsigned int insideMenu:1; unsigned int insideMenu:1;
unsigned int enabled:1;
} flags; } flags;
} PopUpButton; } PopUpButton;
@@ -43,6 +52,8 @@ typedef struct W_PopUpButton {
#define MENU_BLINK_DELAY 60000 #define MENU_BLINK_DELAY 60000
#define MENU_BLINK_COUNT 2 #define MENU_BLINK_COUNT 2
#define SCROLL_DELAY 30
W_ViewProcedureTable _PopUpButtonViewProcedures = { W_ViewProcedureTable _PopUpButtonViewProcedures = {
NULL, NULL,
@@ -94,6 +105,8 @@ WMCreatePopUpButton(WMWidget *parent)
WMCreateEventHandler(bPtr->view, ButtonPressMask|ButtonReleaseMask, WMCreateEventHandler(bPtr->view, ButtonPressMask|ButtonReleaseMask,
handleActionEvents, bPtr); handleActionEvents, bPtr);
bPtr->flags.enabled = 1;
bPtr->menuView = W_CreateTopView(scr); bPtr->menuView = W_CreateTopView(scr);
bPtr->menuView->attribs.override_redirect = True; bPtr->menuView->attribs.override_redirect = True;
bPtr->menuView->attribFlags |= CWOverrideRedirect; bPtr->menuView->attribFlags |= CWOverrideRedirect;
@@ -101,8 +114,8 @@ WMCreatePopUpButton(WMWidget *parent)
W_ResizeView(bPtr->menuView, bPtr->view->size.width, 1); W_ResizeView(bPtr->menuView, bPtr->view->size.width, 1);
WMCreateEventHandler(bPtr->menuView, ButtonPressMask|ButtonReleaseMask WMCreateEventHandler(bPtr->menuView, ButtonPressMask|ButtonReleaseMask
|EnterWindowMask|LeaveWindowMask|ButtonMotionMask, |EnterWindowMask|LeaveWindowMask|ButtonMotionMask
handleActionEvents, bPtr); |ExposureMask, handleActionEvents, bPtr);
return bPtr; return bPtr;
} }
@@ -244,6 +257,15 @@ WMRemovePopUpButtonItem(WMPopUpButton *bPtr, int index)
} }
void
WMSetPopUpButtonEnabled(WMPopUpButton *bPtr, Bool flag)
{
bPtr->flags.enabled = flag;
if (bPtr->view->flags.mapped)
paintPopUpButton(bPtr);
}
void void
WMSetPopUpButtonSelectedItem(WMPopUpButton *bPtr, int index) WMSetPopUpButtonSelectedItem(WMPopUpButton *bPtr, int index)
{ {
@@ -380,10 +402,11 @@ paintPopUpButton(PopUpButton *bPtr)
bPtr->view->size.height, WRRaised); bPtr->view->size.height, WRRaised);
if (caption) { if (caption) {
W_PaintText(bPtr->view, pixmap, scr->normalFont, W_PaintText(bPtr->view, pixmap, scr->normalFont, 6,
6, (bPtr->view->size.height-scr->normalFont->height)/2, (bPtr->view->size.height-WMFontHeight(scr->normalFont))/2,
bPtr->view->size.width, WALeft, W_GC(scr->black), False, bPtr->view->size.width, WALeft,
caption, strlen(caption)); bPtr->flags.enabled ? W_GC(scr->black) : W_GC(scr->darkGray),
False, caption, strlen(caption));
} }
if (bPtr->flags.pullsDown) { if (bPtr->flags.pullsDown) {
@@ -448,7 +471,7 @@ paintMenuEntry(PopUpButton *bPtr, int index, int highlight)
itemHeight = bPtr->view->size.height; itemHeight = bPtr->view->size.height;
width = bPtr->view->size.width; width = bPtr->view->size.width;
height = itemHeight * bPtr->itemCount; height = itemHeight * bPtr->itemCount;
yo = (itemHeight - scr->normalFont->height)/2; yo = (itemHeight - WMFontHeight(scr->normalFont))/2;
if (!highlight) { if (!highlight) {
XClearArea(scr->display, bPtr->menuView->window, 0, index*itemHeight, XClearArea(scr->display, bPtr->menuView->window, 0, index*itemHeight,
@@ -495,7 +518,7 @@ makeMenuPixmap(PopUpButton *bPtr)
itemHeight = bPtr->view->size.height; itemHeight = bPtr->view->size.height;
width = bPtr->view->size.width; width = bPtr->view->size.width;
height = itemHeight * bPtr->itemCount; height = itemHeight * bPtr->itemCount;
yo = (itemHeight - scr->normalFont->height)/2; yo = (itemHeight - WMFontHeight(scr->normalFont))/2;
pixmap = XCreatePixmap(scr->display, bPtr->view->window, width, height, pixmap = XCreatePixmap(scr->display, bPtr->view->window, width, height,
scr->depth); scr->depth);
@@ -595,17 +618,71 @@ itemIsEnabled(PopUpButton *bPtr, int index)
{ {
ItemList *item = bPtr->items; ItemList *item = bPtr->items;
while (index-- > 0) while (index-- > 0 && item)
item = item->nextPtr; item = item->nextPtr;
return !item->disabled; return item ? !item->disabled : False;
} }
static void
autoScroll(void *data)
{
PopUpButton *bPtr = (PopUpButton*)data;
int scrHeight = WMWidgetScreen(bPtr)->rootView->size.height;
int repeat = 0;
int dy = 0;
if (bPtr->scrollStartY >= scrHeight-1
&& bPtr->menuView->pos.y+bPtr->menuView->size.height >= scrHeight-1) {
repeat = 1;
if (bPtr->menuView->pos.y+bPtr->menuView->size.height-5
<= scrHeight - 1) {
dy = scrHeight - 1
- (bPtr->menuView->pos.y+bPtr->menuView->size.height);
} else
dy = -5;
} else if (bPtr->scrollStartY <= 1 && bPtr->menuView->pos.y < 1) {
repeat = 1;
if (bPtr->menuView->pos.y+5 > 1)
dy = 1 - bPtr->menuView->pos.y;
else
dy = 5;
}
if (repeat) {
int oldItem;
W_MoveView(bPtr->menuView, bPtr->menuView->pos.x,
bPtr->menuView->pos.y + dy);
oldItem = bPtr->highlightedItem;
bPtr->highlightedItem = (bPtr->scrollStartY - bPtr->menuView->pos.y)
/ bPtr->view->size.height;
if (oldItem!=bPtr->highlightedItem) {
paintMenuEntry(bPtr, oldItem, False);
paintMenuEntry(bPtr, bPtr->highlightedItem,
itemIsEnabled(bPtr, bPtr->highlightedItem));
}
bPtr->timer = WMAddTimerHandler(SCROLL_DELAY, autoScroll, bPtr);
} else {
bPtr->timer = NULL;
}
}
static void static void
handleActionEvents(XEvent *event, void *data) handleActionEvents(XEvent *event, void *data)
{ {
PopUpButton *bPtr = (PopUpButton*)data; PopUpButton *bPtr = (PopUpButton*)data;
int oldItem; int oldItem;
int scrHeight = WMWidgetScreen(bPtr)->rootView->size.height;
CHECK_CLASS(data, WC_PopUpButton); CHECK_CLASS(data, WC_PopUpButton);
@@ -614,6 +691,11 @@ handleActionEvents(XEvent *event, void *data)
switch (event->type) { switch (event->type) {
/* called for menuView */ /* called for menuView */
case Expose:
paintMenuEntry(bPtr, bPtr->highlightedItem,
itemIsEnabled(bPtr, bPtr->highlightedItem));
break;
case LeaveNotify: case LeaveNotify:
bPtr->flags.insideMenu = 0; bPtr->flags.insideMenu = 0;
if (bPtr->menuView->flags.mapped) if (bPtr->menuView->flags.mapped)
@@ -634,11 +716,24 @@ handleActionEvents(XEvent *event, void *data)
paintMenuEntry(bPtr, bPtr->highlightedItem, paintMenuEntry(bPtr, bPtr->highlightedItem,
itemIsEnabled(bPtr, bPtr->highlightedItem)); itemIsEnabled(bPtr, bPtr->highlightedItem));
} }
if (event->xmotion.y_root >= scrHeight-1
|| event->xmotion.y_root <= 1) {
bPtr->scrollStartY = event->xmotion.y_root;
if (!bPtr->timer)
autoScroll(bPtr);
} else if (bPtr->timer) {
WMDeleteTimerHandler(bPtr->timer);
bPtr->timer = NULL;
}
} }
break; break;
/* called for bPtr->view */ /* called for bPtr->view */
case ButtonPress: case ButtonPress:
if (!bPtr->flags.enabled)
break;
popUpMenu(bPtr); popUpMenu(bPtr);
if (!bPtr->flags.pullsDown) { if (!bPtr->flags.pullsDown) {
bPtr->highlightedItem = bPtr->selectedItemIndex; bPtr->highlightedItem = bPtr->selectedItemIndex;
@@ -657,6 +752,12 @@ handleActionEvents(XEvent *event, void *data)
XUngrabPointer(bPtr->view->screen->display, event->xbutton.time); XUngrabPointer(bPtr->view->screen->display, event->xbutton.time);
if (!bPtr->flags.pullsDown) if (!bPtr->flags.pullsDown)
popDownMenu(bPtr); popDownMenu(bPtr);
if (bPtr->timer) {
WMDeleteTimerHandler(bPtr->timer);
bPtr->timer = NULL;
}
if (bPtr->flags.insideMenu && bPtr->highlightedItem>=0) { if (bPtr->flags.insideMenu && bPtr->highlightedItem>=0) {
if (itemIsEnabled(bPtr, bPtr->highlightedItem)) { if (itemIsEnabled(bPtr, bPtr->highlightedItem)) {
int i; int i;
@@ -691,6 +792,10 @@ destroyPopUpButton(PopUpButton *bPtr)
{ {
ItemList *itemPtr, *tmp; ItemList *itemPtr, *tmp;
if (bPtr->timer) {
WMDeleteTimerHandler(bPtr->timer);
}
itemPtr = bPtr->items; itemPtr = bPtr->items;
while (itemPtr!=NULL) { while (itemPtr!=NULL) {
free(itemPtr->text); free(itemPtr->text);

View File

@@ -18,10 +18,13 @@ typedef struct W_Slider {
int value; int value;
Pixmap knobPixmap; Pixmap knobPixmap;
WMPixmap *backPixmap;
WMAction *action; WMAction *action;
void *clientData; void *clientData;
int knobThickness;
struct { struct {
unsigned int continuous:1; unsigned int continuous:1;
@@ -33,8 +36,6 @@ typedef struct W_Slider {
#define SLIDER_LENGTH 20
static void resizeSlider(); static void resizeSlider();
@@ -54,6 +55,7 @@ static void realizeSlider(Slider *sPtr);
static void handleEvents(XEvent *event, void *data); static void handleEvents(XEvent *event, void *data);
static void handleActionEvents(XEvent *event, void *data); static void handleActionEvents(XEvent *event, void *data);
static void makeKnobPixmap(Slider *sPtr);
static void static void
realizeObserver(void *self, WMNotification *not) realizeObserver(void *self, WMNotification *not)
@@ -94,6 +96,8 @@ WMCreateSlider(WMWidget *parent)
sPtr->maxValue = 100; sPtr->maxValue = 100;
sPtr->value = 50; sPtr->value = 50;
sPtr->knobThickness = 20;
sPtr->flags.continuous = 1; sPtr->flags.continuous = 1;
WMAddNotificationObserver(realizeObserver, sPtr, WMAddNotificationObserver(realizeObserver, sPtr,
@@ -103,6 +107,36 @@ WMCreateSlider(WMWidget *parent)
} }
void
WMSetSliderImage(WMSlider *sPtr, WMPixmap *pixmap)
{
if (sPtr->backPixmap)
WMReleasePixmap(sPtr->backPixmap);
sPtr->backPixmap = WMRetainPixmap(pixmap);
if (sPtr->view->flags.mapped) {
paintSlider(sPtr);
}
}
void
WMSetSliderKnobThickness(WMSlider *sPtr, int thickness)
{
assert(thickness > 0);
sPtr->knobThickness = thickness;
if (sPtr->knobPixmap) {
makeKnobPixmap(sPtr);
}
if (sPtr->view->flags.mapped) {
paintSlider(sPtr);
}
}
int int
WMGetSliderMinValue(WMSlider *slider) WMGetSliderMinValue(WMSlider *slider)
@@ -204,16 +238,18 @@ makeKnobPixmap(Slider *sPtr)
if (sPtr->flags.vertical) { if (sPtr->flags.vertical) {
w = sPtr->view->size.width-2; w = sPtr->view->size.width-2;
h = SLIDER_LENGTH; h = sPtr->knobThickness;
} else { } else {
w = SLIDER_LENGTH; w = sPtr->knobThickness;
h = sPtr->view->size.height-2; h = sPtr->view->size.height-2;
} }
pix = XCreatePixmap(scr->display, sPtr->view->window, w, h, scr->depth); pix = XCreatePixmap(scr->display, sPtr->view->window, w, h, scr->depth);
XFillRectangle(scr->display, pix, W_GC(scr->gray), 0, 0, w, h); XFillRectangle(scr->display, pix, W_GC(scr->gray), 0, 0, w, h);
if (sPtr->flags.vertical) { if (sPtr->knobThickness < 10) {
W_DrawRelief(scr, pix, 0, 0, w, h, WRRaised);
} else if (sPtr->flags.vertical) {
XDrawLine(scr->display, pix, W_GC(scr->white), 0, 0, 0, h-3); XDrawLine(scr->display, pix, W_GC(scr->white), 0, 0, 0, h-3);
XDrawLine(scr->display, pix, W_GC(scr->white), 1, 0, 1, h-3); XDrawLine(scr->display, pix, W_GC(scr->white), 1, 0, 1, h-3);
XDrawLine(scr->display, pix, W_GC(scr->darkGray), w-2, 1, w-2, h/2-2); XDrawLine(scr->display, pix, W_GC(scr->darkGray), w-2, 1, w-2, h/2-2);
@@ -222,6 +258,7 @@ makeKnobPixmap(Slider *sPtr)
XDrawLine(scr->display, pix, W_GC(scr->white), 0, 0, w-2, 0); XDrawLine(scr->display, pix, W_GC(scr->white), 0, 0, w-2, 0);
XDrawLine(scr->display, pix, W_GC(scr->darkGray), 1, h/2-2, w-3, h/2-2); XDrawLine(scr->display, pix, W_GC(scr->darkGray), 1, h/2-2, w-3, h/2-2);
XDrawLine(scr->display, pix, W_GC(scr->white), 0, h/2-1, w-3, h/2-1); XDrawLine(scr->display, pix, W_GC(scr->white), 0, h/2-1, w-3, h/2-1);
XDrawLine(scr->display, pix, W_GC(scr->black), w-1, 0, w-1, h-2); XDrawLine(scr->display, pix, W_GC(scr->black), w-1, 0, w-1, h-2);
XDrawLine(scr->display, pix, W_GC(scr->darkGray), 0, h-3, w-2, h-3); XDrawLine(scr->display, pix, W_GC(scr->darkGray), 0, h-3, w-2, h-3);
@@ -231,9 +268,11 @@ makeKnobPixmap(Slider *sPtr)
XDrawLine(scr->display, pix, W_GC(scr->white), 0, 0, w-3, 0); XDrawLine(scr->display, pix, W_GC(scr->white), 0, 0, w-3, 0);
XDrawLine(scr->display, pix, W_GC(scr->white), 0, 0, 0, h-2); XDrawLine(scr->display, pix, W_GC(scr->white), 0, 0, 0, h-2);
XDrawLine(scr->display, pix, W_GC(scr->white), 1, 0, 1, h-3); XDrawLine(scr->display, pix, W_GC(scr->white), 1, 0, 1, h-3);
XDrawLine(scr->display, pix, W_GC(scr->darkGray), w/2-2, 1, w/2-2, h-3); XDrawLine(scr->display, pix, W_GC(scr->darkGray), w/2-2, 1, w/2-2, h-3);
XDrawLine(scr->display, pix, W_GC(scr->white), w/2-1, 0, w/2-1, h-3); XDrawLine(scr->display, pix, W_GC(scr->white), w/2-1, 0, w/2-1, h-3);
XDrawLine(scr->display, pix, W_GC(scr->darkGray), w-3, 0, w-3, h-2); XDrawLine(scr->display, pix, W_GC(scr->darkGray), w-3, 0, w-3, h-2);
XDrawLine(scr->display, pix, W_GC(scr->black), w-2, 0, w-2, h-2); XDrawLine(scr->display, pix, W_GC(scr->black), w-2, 0, w-2, h-2);
XDrawLine(scr->display, pix, W_GC(scr->darkGray), w-1, 0, w-1, h-1); XDrawLine(scr->display, pix, W_GC(scr->darkGray), w-1, 0, w-1, h-1);
@@ -241,6 +280,7 @@ makeKnobPixmap(Slider *sPtr)
XDrawLine(scr->display, pix, W_GC(scr->black), 1, h-1, w/2+1, h-1); XDrawLine(scr->display, pix, W_GC(scr->black), 1, h-1, w/2+1, h-1);
XDrawLine(scr->display, pix, W_GC(scr->darkGray), 1, h-2, w/2-2, h-2); XDrawLine(scr->display, pix, W_GC(scr->darkGray), 1, h-2, w/2-2, h-2);
XDrawLine(scr->display, pix, W_GC(scr->darkGray), w/2, h-2, w-3,h-2); XDrawLine(scr->display, pix, W_GC(scr->darkGray), w/2, h-2, w-3,h-2);
XDrawLine(scr->display, pix, W_GC(scr->black), 0, h-1, w-2, h-1); XDrawLine(scr->display, pix, W_GC(scr->black), 0, h-1, w-2, h-1);
} }
@@ -305,20 +345,30 @@ paintSlider(Slider *sPtr)
buffer = XCreatePixmap(scr->display, sPtr->view->window, buffer = XCreatePixmap(scr->display, sPtr->view->window,
size.width, size.height, scr->depth); size.width, size.height, scr->depth);
XFillRectangle(scr->display, buffer, lgc, 0, 0, size.width, size.height);
if (sPtr->backPixmap) {
WMSize size = WMGetPixmapSize(sPtr->backPixmap);
XCopyArea(scr->display, WMGetPixmapXID(sPtr->backPixmap),
buffer, scr->copyGC, 0, 0, size.width, size.height, 1, 1);
} else {
XFillRectangle(scr->display, buffer, lgc, 0, 0, size.width,
size.height);
XFillRectangle(scr->display, buffer, scr->stippleGC, 0, 0, size.width, XFillRectangle(scr->display, buffer, scr->stippleGC, 0, 0, size.width,
size.height); size.height);
}
if (sPtr->flags.vertical) { if (sPtr->flags.vertical) {
pos = (size.height-2-SLIDER_LENGTH)*(POSV-MINV)/(MAXV-MINV)+1; pos = (size.height-2-sPtr->knobThickness)*(POSV-MINV)/(MAXV-MINV)+1;
/* draw knob */ /* draw knob */
XCopyArea(scr->display, sPtr->knobPixmap, buffer, XCopyArea(scr->display, sPtr->knobPixmap, buffer,
scr->copyGC, 0, 0, size.width-2, SLIDER_LENGTH, 1, pos); scr->copyGC, 0, 0, size.width-2, sPtr->knobThickness,
1, pos);
} else { } else {
pos = (size.width-2-SLIDER_LENGTH)*(POSV-MINV)/(MAXV-MINV)+1; pos = (size.width-2-sPtr->knobThickness)*(POSV-MINV)/(MAXV-MINV)+1;
/* draw knob */ /* draw knob */
XCopyArea(scr->display, sPtr->knobPixmap, buffer, XCopyArea(scr->display, sPtr->knobPixmap, buffer,
scr->copyGC, 0, 0, SLIDER_LENGTH, size.height, pos, 1); scr->copyGC, 0, 0, sPtr->knobThickness, size.height, pos, 1);
} }
XDrawLine(scr->display, buffer, bgc, 0, 0, 0, size.height-1); XDrawLine(scr->display, buffer, bgc, 0, 0, 0, size.height-1);
@@ -373,18 +423,18 @@ getSliderPart(Slider *sPtr, int x, int y)
if (sPtr->flags.vertical) { if (sPtr->flags.vertical) {
p = y; p = y;
pos = (size.height-2-SLIDER_LENGTH)*(POSV-MINV)/(MAXV-MINV); pos = (size.height-2-sPtr->knobThickness)*(POSV-MINV)/(MAXV-MINV);
if (p < pos) if (p < pos)
return INCR_PART; return INCR_PART;
if (p > pos + SLIDER_LENGTH) if (p > pos + sPtr->knobThickness)
return DECR_PART; return DECR_PART;
return KNOB_PART; return KNOB_PART;
} else { } else {
p = x; p = x;
pos = (size.width-2-SLIDER_LENGTH)*(POSV-MINV)/(MAXV-MINV); pos = (size.width-2-sPtr->knobThickness)*(POSV-MINV)/(MAXV-MINV);
if (p < pos) if (p < pos)
return DECR_PART; return DECR_PART;
if (p > pos + SLIDER_LENGTH) if (p > pos + sPtr->knobThickness)
return INCR_PART; return INCR_PART;
return KNOB_PART; return KNOB_PART;
} }
@@ -398,9 +448,11 @@ valueForMousePoint(Slider *sPtr, int x, int y)
int f; int f;
if (sPtr->flags.vertical) { if (sPtr->flags.vertical) {
f = (y-SLIDER_LENGTH/2)*(MAXV-MINV)/((int)size.height-2-SLIDER_LENGTH); f = (y-sPtr->knobThickness/2)*(MAXV-MINV)
/ ((int)size.height-2-sPtr->knobThickness);
} else { } else {
f = (x-SLIDER_LENGTH/2)*(MAXV-MINV)/((int)size.width-2-SLIDER_LENGTH); f = (x-sPtr->knobThickness/2)*(MAXV-MINV)
/ ((int)size.width-2-sPtr->knobThickness);
} }
f += sPtr->minValue; f += sPtr->minValue;
@@ -408,6 +460,7 @@ valueForMousePoint(Slider *sPtr, int x, int y)
f = sPtr->minValue; f = sPtr->minValue;
else if (f > sPtr->maxValue) else if (f > sPtr->maxValue)
f = sPtr->maxValue; f = sPtr->maxValue;
return f; return f;
} }
@@ -477,6 +530,9 @@ destroySlider(Slider *sPtr)
if (sPtr->knobPixmap) if (sPtr->knobPixmap)
XFreePixmap(sPtr->view->screen->display, sPtr->knobPixmap); XFreePixmap(sPtr->view->screen->display, sPtr->knobPixmap);
if (sPtr->backPixmap)
WMReleasePixmap(sPtr->backPixmap);
free(sPtr); free(sPtr);
} }

View File

@@ -273,41 +273,18 @@ testSlider(WMScreen *scr)
s = WMCreateSlider(win); s = WMCreateSlider(win);
WMResizeWidget(s, 16, 100); WMResizeWidget(s, 16, 100);
WMMoveWidget(s, 100, 100); WMMoveWidget(s, 100, 100);
WMSetSliderKnobThickness(s, 8);
s = WMCreateSlider(win); s = WMCreateSlider(win);
WMResizeWidget(s, 100, 16); WMResizeWidget(s, 100, 16);
WMMoveWidget(s, 100, 10); WMMoveWidget(s, 100, 10);
WMSetSliderKnobThickness(s, 8);
WMRealizeWidget(win); WMRealizeWidget(win);
WMMapSubwidgets(win); WMMapSubwidgets(win);
WMMapWidget(win); WMMapWidget(win);
} }
#if 0
void
testText(WMScreen *scr)
{
WMWindow *win;
WMSimpleText *text;
windowCount++;
win = WMCreateWindow(scr, "testText");
WMResizeWidget(win, 300, 300);
WMSetWindowTitle(win, "Text");
WMSetWindowCloseAction(win, closeAction, NULL);
text = WMCreateSimpleText(win);
WMResizeWidget(text, 280, 280);
WMMoveWidget(text, 10, 10);
WMRealizeWidget(win);
WMMapSubwidgets(win);
WMMapWidget(win);
}
#endif
void void
testTextField(WMScreen *scr) testTextField(WMScreen *scr)
{ {
@@ -424,13 +401,15 @@ int main(int argc, char **argv)
* *
* Put the testSomething() function you want to test here. * Put the testSomething() function you want to test here.
*/ */
#if 1 #if 0
testOpenFilePanel(scr); testOpenFilePanel(scr);
testFontPanel(scr); testFontPanel(scr);
testList(scr); testList(scr);
testGradientButtons(scr); testGradientButtons(scr);
testScrollView(scr); testScrollView(scr);
#endif
testColorWell(scr); testColorWell(scr);
#if 1
testSlider(scr); testSlider(scr);
testTextField(scr); testTextField(scr);
testPullDown(scr); testPullDown(scr);

View File

@@ -36,6 +36,8 @@ typedef struct W_TextField {
short usableWidth; short usableWidth;
short offsetWidth; /* offset of text from border */ short offsetWidth; /* offset of text from border */
WMRange selection;
#if 0 #if 0
WMHandlerID timerID; /* for cursor blinking */ WMHandlerID timerID; /* for cursor blinking */
#endif #endif
@@ -191,7 +193,7 @@ WMCreateTextField(WMWidget *parent)
WMSetTextFieldBordered(tPtr, DEFAULT_BORDERED); WMSetTextFieldBordered(tPtr, DEFAULT_BORDERED);
tPtr->flags.alignment = DEFAULT_ALIGNMENT; tPtr->flags.alignment = DEFAULT_ALIGNMENT;
tPtr->offsetWidth = (tPtr->view->size.height tPtr->offsetWidth = (tPtr->view->size.height
- tPtr->view->screen->normalFont->height)/2; - WMFontHeight(tPtr->view->screen->normalFont))/2;
WMCreateEventHandler(tPtr->view, EnterWindowMask|LeaveWindowMask WMCreateEventHandler(tPtr->view, EnterWindowMask|LeaveWindowMask
|ButtonPressMask|KeyPressMask|Button1MotionMask, |ButtonPressMask|KeyPressMask|Button1MotionMask,
@@ -307,8 +309,12 @@ WMSetTextFieldText(WMTextField *tPtr, char *text)
} }
strcpy(tPtr->text, text); strcpy(tPtr->text, text);
} }
/*
if (tPtr->textLen < tPtr->cursorPosition) if (tPtr->textLen < tPtr->cursorPosition)
tPtr->cursorPosition = tPtr->textLen; tPtr->cursorPosition = tPtr->textLen;
*/
tPtr->cursorPosition = 0;
tPtr->viewPosition = 0;
if (tPtr->view->flags.realized) if (tPtr->view->flags.realized)
paintTextField(tPtr); paintTextField(tPtr);
@@ -370,7 +376,7 @@ resizeTextField(WMTextField *tPtr, unsigned int width, unsigned int height)
W_ResizeView(tPtr->view, width, height); W_ResizeView(tPtr->view, width, height);
tPtr->offsetWidth = (tPtr->view->size.height tPtr->offsetWidth = (tPtr->view->size.height
- tPtr->view->screen->normalFont->height)/2; - WMFontHeight(tPtr->view->screen->normalFont))/2;
tPtr->usableWidth = tPtr->view->size.width - 2*tPtr->offsetWidth; tPtr->usableWidth = tPtr->view->size.width - 2*tPtr->offsetWidth;
} }
@@ -477,7 +483,7 @@ paintTextField(TextField *tPtr)
&(tPtr->text[tPtr->viewPosition]), &(tPtr->text[tPtr->viewPosition]),
tPtr->textLen - tPtr->viewPosition); tPtr->textLen - tPtr->viewPosition);
th = screen->normalFont->height; th = WMFontHeight(screen->normalFont);
ty = tPtr->offsetWidth; ty = tPtr->offsetWidth;
switch (tPtr->flags.alignment) { switch (tPtr->flags.alignment) {

View File

@@ -144,8 +144,9 @@ createView(W_Screen *screen, W_View *parent)
view->attribFlags = CWEventMask|CWBitGravity; view->attribFlags = CWEventMask|CWBitGravity;
view->attribs = defAtts; view->attribs = defAtts;
view->attribFlags |= CWBackPixel|CWColormap; view->attribFlags |= CWBackPixel|CWColormap|CWBorderPixel;
view->attribs.background_pixel = W_PIXEL(screen->gray); view->attribs.background_pixel = W_PIXEL(screen->gray);
view->attribs.border_pixel = W_PIXEL(screen->black);
view->attribs.colormap = screen->colormap; view->attribs.colormap = screen->colormap;
adoptChildView(parent, view); adoptChildView(parent, view);

236
WPrefs.app/Appearance.c Normal file
View File

@@ -0,0 +1,236 @@
/* TextureAndColor.c- color/texture for titlebar etc.
*
* WPrefs - Window Maker Preferences Program
*
* Copyright (c) 1999 Alfredo K. Kojima
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#include "WPrefs.h"
#include "TexturePanel.h"
typedef struct _Panel {
WMFrame *frame;
char *sectionName;
CallbackRec callbacks;
WMWindow *win;
WMLabel *prevL;
WMPopUpButton *secP;
/* texture list */
WMLabel *texL;
WMList *texLs;
WMPopUpButton *cmdP;
WMTextField *texT;
WMButton *editB;
/* for preview shit */
Pixmap preview;
Pixmap ftitle;
Pixmap utitle;
Pixmap otitle;
Pixmap icon;
Pixmap back;
Pixmap mtitle;
Pixmap mitem;
} _Panel;
#define ICON_FILE "appearance"
#define FTITLE (1<<0)
#define UTITLE (1<<1)
#define OTITLE (1<<2)
#define ICON (1<<3)
#define BACK (1<<4)
#define MTITLE (1<<5)
#define MITEM (1<<6)
#define EVERYTHING 0xff
static Pixmap
renderTexture(_Panel *panel, char *texture, int width, int height,
Bool bordered)
{
return None;
}
static void
updatePreviewBox(_Panel *panel, int elements)
{
WMScreen *scr = WMWidgetScreen(panel->win);
Display *dpy = WMScreenDisplay(scr);
/* RContext *rc = WMScreenRContext(scr);*/
int refresh = 0;
char *tmp;
if (!panel->preview) {
panel->preview = XCreatePixmap(dpy, WMWidgetXID(panel->win),
220-4, 185-4, WMScreenDepth(scr));
refresh = -1;
}
if (elements & FTITLE) {
if (panel->ftitle)
XFreePixmap(dpy, panel->ftitle);
panel->ftitle = renderTexture(panel, tmp, 180, 20, True);
free(tmp);
}
/* have to repaint everything to make things simple, eliminating
* clipping stuff */
if (refresh) {
}
if (refresh<0) {
WMPixmap *pix;
pix = WMCreatePixmapFromXPixmaps(scr, panel->preview, None,
220-4, 185-4, WMScreenDepth(scr));
WMSetLabelImage(panel->prevL, pix);
WMReleasePixmap(pix);
}
}
static char*
getStrArrayForKey(char *key)
{
proplist_t v;
v = GetObjectForKey(key);
if (!v)
return NULL;
return PLGetDescription(v);
}
static void
createPanel(Panel *p)
{
_Panel *panel = (_Panel*)p;
WMColor *color;
WMFont *boldFont;
WMScreen *scr = WMWidgetScreen(panel->win);
panel->frame = WMCreateFrame(panel->win);
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
/* preview box */
panel->prevL = WMCreateLabel(panel->frame);
WMResizeWidget(panel->prevL, 260, 190);
WMMoveWidget(panel->prevL, 10, 10);
WMSetLabelRelief(panel->prevL, WRSunken);
panel->secP = WMCreatePopUpButton(panel->frame);
WMResizeWidget(panel->secP, 242, 20);
WMMoveWidget(panel->secP, 10, 207);
// WMSetPopUpButtonAction(panel->secP, changePage, panel);
/* texture list */
boldFont = WMBoldSystemFontOfSize(scr, 12);
panel->texL = WMCreateLabel(panel->frame);
WMResizeWidget(panel->texL, 225, 18);
WMMoveWidget(panel->texL, 285, 10);
WMSetLabelFont(panel->texL, boldFont);
WMSetLabelText(panel->texL, _("Textures"));
WMSetLabelRelief(panel->texL, WRSunken);
WMSetLabelTextAlignment(panel->texL, WACenter);
color = WMDarkGrayColor(scr);
WMSetWidgetBackgroundColor(panel->texL, color);
WMReleaseColor(color);
color = WMWhiteColor(scr);
WMSetLabelTextColor(panel->texL, color);
WMReleaseColor(color);
WMReleaseFont(boldFont);
panel->texLs = WMCreateList(panel->frame);
WMResizeWidget(panel->texLs, 225, 144);
WMMoveWidget(panel->texLs, 285, 30);
panel->cmdP = WMCreatePopUpButton(panel->frame);
WMResizeWidget(panel->cmdP, 225, 20);
WMMoveWidget(panel->cmdP, 285, 180);
WMSetPopUpButtonPullsDown(panel->cmdP, True);
WMSetPopUpButtonText(panel->cmdP, _("Texture Commands"));
WMAddPopUpButtonItem(panel->cmdP, _("Create New"));
WMAddPopUpButtonItem(panel->cmdP, _("Add From Text Field"));
WMAddPopUpButtonItem(panel->cmdP, _("Remove Selected"));
WMAddPopUpButtonItem(panel->cmdP, _("Extract From File"));
panel->editB = WMCreateCommandButton(panel->frame);
WMResizeWidget(panel->editB, 64, 20);
WMMoveWidget(panel->editB, 260, 207);
WMSetButtonText(panel->editB, _("Browse..."));
panel->texT = WMCreateTextField(panel->frame);
WMResizeWidget(panel->texT, 176, 20);
WMMoveWidget(panel->texT, 330, 207);
/**/
WMRealizeWidget(panel->frame);
WMMapSubwidgets(panel->frame);
WMSetPopUpButtonSelectedItem(panel->secP, 0);
}
Panel*
InitAppearance(WMScreen *scr, WMWindow *win)
{
_Panel *panel;
panel = wmalloc(sizeof(_Panel));
memset(panel, 0, sizeof(_Panel));
panel->sectionName = _("Appearance Preferences");
panel->win = win;
panel->callbacks.createWidgets = createPanel;
AddSection(panel, ICON_FILE);
return panel;
}

View File

@@ -355,7 +355,7 @@ createPanel(Panel *p)
panel->ignB = WMCreateSwitchButton(panel->optF); panel->ignB = WMCreateSwitchButton(panel->optF);
WMResizeWidget(panel->ignB, 210, 50); WMResizeWidget(panel->ignB, 210, 50);
WMMoveWidget(panel->ignB, 15, 10); WMMoveWidget(panel->ignB, 15, 10);
WMSetButtonText(panel->ignB, _("Do not let aplications receive the "\ WMSetButtonText(panel->ignB, _("Do not let applications receive the "\
"click used to focus windows.")); "click used to focus windows."));
panel->newB = WMCreateSwitchButton(panel->optF); panel->newB = WMCreateSwitchButton(panel->optF);

View File

@@ -46,6 +46,10 @@ typedef struct _Panel {
WMLabel *instructionsL; WMLabel *instructionsL;
WMColor *white;
WMColor *black;
WMFont *font;
/**/ /**/
char capturing; char capturing;
char **shortcuts; char **shortcuts;
@@ -71,6 +75,7 @@ static char *keyOptions[] = {
"LowerKey", "LowerKey",
"RaiseLowerKey", "RaiseLowerKey",
"ShadeKey", "ShadeKey",
"MoveResizeKey",
"SelectKey", "SelectKey",
"FocusNextKey", "FocusNextKey",
"FocusPrevKey", "FocusPrevKey",
@@ -92,6 +97,14 @@ static char *keyOptions[] = {
"WindowShortcut2Key", "WindowShortcut2Key",
"WindowShortcut3Key", "WindowShortcut3Key",
"WindowShortcut4Key", "WindowShortcut4Key",
#ifdef EXTEND_WINDOWSHORTCUT
"WindowShortcut5Key",
"WindowShortcut6Key",
"WindowShortcut7Key",
"WindowShortcut8Key",
"WindowShortcut9Key",
"WindowShortcut10Key",
#endif
"ClipRaiseKey", "ClipRaiseKey",
"ClipLowerKey", "ClipLowerKey",
#ifndef XKB_MODELOCK #ifndef XKB_MODELOCK
@@ -180,6 +193,8 @@ captureClick(WMWidget *w, void *data)
if (panel->shortcuts[row]) if (panel->shortcuts[row])
free(panel->shortcuts[row]); free(panel->shortcuts[row]);
panel->shortcuts[row] = shortcut; panel->shortcuts[row] = shortcut;
WMRedisplayWidget(panel->actLs);
} else { } else {
free(shortcut); free(shortcut);
} }
@@ -205,6 +220,7 @@ clearShortcut(WMWidget *w, void *data)
if (panel->shortcuts[row]) if (panel->shortcuts[row])
free(panel->shortcuts[row]); free(panel->shortcuts[row]);
panel->shortcuts[row]=NULL; panel->shortcuts[row]=NULL;
WMRedisplayWidget(panel->actLs);
} }
} }
@@ -226,6 +242,7 @@ typedKeys(void *observerData, WMNotification *notification)
free(panel->shortcuts[row]); free(panel->shortcuts[row]);
panel->shortcuts[row] = NULL; panel->shortcuts[row] = NULL;
} }
WMRedisplayWidget(panel->actLs);
} }
@@ -281,6 +298,40 @@ showData(_Panel *panel)
panel->shortcuts[i] = NULL; panel->shortcuts[i] = NULL;
} }
} }
WMRedisplayWidget(panel->actLs);
}
static void
paintItem(WMList *lPtr, int index, Drawable d, char *text, int state,
WMRect *rect)
{
int width, height, x, y;
_Panel *panel = (_Panel*)WMGetHangedData(lPtr);
WMScreen *scr = WMWidgetScreen(lPtr);
Display *dpy = WMScreenDisplay(scr);
width = rect->size.width;
height = rect->size.height;
x = rect->pos.x;
y = rect->pos.y;
if (state & WLDSSelected)
XFillRectangle(dpy, d, WMColorGC(panel->white), x, y, width,
height);
else
XClearArea(dpy, d, x, y, width, height, False);
if (panel->shortcuts[index]) {
WMPixmap *pix = WMGetSystemPixmap(scr, WSICheckMark);
WMSize size = WMGetPixmapSize(pix);
WMDrawPixmap(pix, d, x+(20-size.width)/2, (height-size.height)/2+y);
WMReleasePixmap(pix);
}
WMDrawString(scr, d, WMColorGC(panel->black), panel->font, x+20, y,
text, strlen(text));
} }
@@ -318,6 +369,8 @@ createPanel(Panel *p)
panel->actLs = WMCreateList(panel->frame); panel->actLs = WMCreateList(panel->frame);
WMResizeWidget(panel->actLs, 280, 190); WMResizeWidget(panel->actLs, 280, 190);
WMMoveWidget(panel->actLs, 20, 32); WMMoveWidget(panel->actLs, 20, 32);
WMSetListUserDrawProc(panel->actLs, paintItem);
WMHangData(panel->actLs, panel);
WMAddListItem(panel->actLs, _("Open applications menu")); WMAddListItem(panel->actLs, _("Open applications menu"));
WMAddListItem(panel->actLs, _("Open window list menu")); WMAddListItem(panel->actLs, _("Open window list menu"));
@@ -332,6 +385,7 @@ createPanel(Panel *p)
WMAddListItem(panel->actLs, _("Raise/Lower window under mouse pointer")); WMAddListItem(panel->actLs, _("Raise/Lower window under mouse pointer"));
WMAddListItem(panel->actLs, _("Shade active window")); WMAddListItem(panel->actLs, _("Shade active window"));
WMAddListItem(panel->actLs, _("Select active window")); WMAddListItem(panel->actLs, _("Select active window"));
WMAddListItem(panel->actLs, _("Move/Resize active window"));
WMAddListItem(panel->actLs, _("Focus next window")); WMAddListItem(panel->actLs, _("Focus next window"));
WMAddListItem(panel->actLs, _("Focus previous window")); WMAddListItem(panel->actLs, _("Focus previous window"));
WMAddListItem(panel->actLs, _("Switch to next workspace")); WMAddListItem(panel->actLs, _("Switch to next workspace"));
@@ -449,6 +503,10 @@ InitKeyboardShortcuts(WMScreen *scr, WMWindow *win)
panel->callbacks.createWidgets = createPanel; panel->callbacks.createWidgets = createPanel;
panel->callbacks.updateDomain = storeData; panel->callbacks.updateDomain = storeData;
panel->white = WMWhiteColor(scr);
panel->black = WMBlackColor(scr);
panel->font = WMSystemFontOfSize(scr, 12);
AddSection(panel, ICON_FILE); AddSection(panel, ICON_FILE);
return panel; return panel;

View File

@@ -18,6 +18,7 @@ WPrefs_SOURCES = \
main.c \ main.c \
WPrefs.c \ WPrefs.c \
WPrefs.h \ WPrefs.h \
Appearance.c \
Configurations.c \ Configurations.c \
Expert.c \ Expert.c \
Focus.c \ Focus.c \
@@ -33,6 +34,7 @@ WPrefs_SOURCES = \
TextureAndColor.c \ TextureAndColor.c \
TexturePanel.c \ TexturePanel.c \
TexturePanel.h \ TexturePanel.h \
Themes.c \
WindowHandling.c \ WindowHandling.c \
Workspace.c \ Workspace.c \
double.c \ double.c \
@@ -56,8 +58,8 @@ WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
WPrefs_LDADD = \ WPrefs_LDADD = \
$(top_builddir)/WINGs/libWINGs.a\ $(top_builddir)/WINGs/libWINGs.a\
$(top_builddir)/wrlib/libwraster.a \ $(top_builddir)/wrlib/libwraster.la \
$(top_builddir)/libPropList/libPropList.a \ $(top_builddir)/libPropList/libPropList.la \
@GFXLFLAGS@ \ @GFXLFLAGS@ \
@XLFLAGS@ \ @XLFLAGS@ \
@GFXLIBS@ \ @GFXLIBS@ \

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -110,6 +113,7 @@ WPrefs_SOURCES = \
main.c \ main.c \
WPrefs.c \ WPrefs.c \
WPrefs.h \ WPrefs.h \
Appearance.c \
Configurations.c \ Configurations.c \
Expert.c \ Expert.c \
Focus.c \ Focus.c \
@@ -125,6 +129,7 @@ WPrefs_SOURCES = \
TextureAndColor.c \ TextureAndColor.c \
TexturePanel.c \ TexturePanel.c \
TexturePanel.h \ TexturePanel.h \
Themes.c \
WindowHandling.c \ WindowHandling.c \
Workspace.c \ Workspace.c \
double.c \ double.c \
@@ -147,8 +152,8 @@ WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
WPrefs_LDADD = \ WPrefs_LDADD = \
$(top_builddir)/WINGs/libWINGs.a\ $(top_builddir)/WINGs/libWINGs.a\
$(top_builddir)/wrlib/libwraster.a \ $(top_builddir)/wrlib/libwraster.la \
$(top_builddir)/libPropList/libPropList.a \ $(top_builddir)/libPropList/libPropList.la \
@GFXLFLAGS@ \ @GFXLFLAGS@ \
@XLFLAGS@ \ @XLFLAGS@ \
@GFXLIBS@ \ @GFXLIBS@ \
@@ -168,15 +173,16 @@ LIBS = @LIBS@
X_CFLAGS = @X_CFLAGS@ X_CFLAGS = @X_CFLAGS@
X_LIBS = @X_LIBS@ X_LIBS = @X_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@
WPrefs_OBJECTS = main.o WPrefs.o Configurations.o Expert.o Focus.o \ WPrefs_OBJECTS = main.o WPrefs.o Appearance.o Configurations.o Expert.o \
Icons.o KeyboardSettings.o KeyboardShortcuts.o Menu.o MenuPreferences.o \ Focus.o Icons.o KeyboardSettings.o KeyboardShortcuts.o Menu.o \
MouseSettings.o Paths.o Preferences.o Text.o TextureAndColor.o \ MenuPreferences.o MouseSettings.o Paths.o Preferences.o Text.o \
TexturePanel.o WindowHandling.o Workspace.o double.o MenuGuru.o \ TextureAndColor.o TexturePanel.o Themes.o WindowHandling.o Workspace.o \
xmodifier.o double.o MenuGuru.o xmodifier.o
WPrefs_LDFLAGS = WPrefs_LDFLAGS =
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@ LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@
DATA = $(wpdata_DATA) DATA = $(wpdata_DATA)
DIST_COMMON = README Makefile.am Makefile.in DIST_COMMON = README Makefile.am Makefile.in
@@ -192,7 +198,7 @@ OBJECTS = $(WPrefs_OBJECTS)
all: all-recursive all-am all: all-recursive all-am
.SUFFIXES: .SUFFIXES:
.SUFFIXES: .S .c .o .s .SUFFIXES: .S .c .lo .o .s
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu WPrefs.app/Makefile cd $(top_srcdir) && $(AUTOMAKE) --gnu WPrefs.app/Makefile
@@ -215,8 +221,8 @@ install-wpexecbinPROGRAMS: $(wpexecbin_PROGRAMS)
$(mkinstalldirs) $(DESTDIR)$(wpexecbindir) $(mkinstalldirs) $(DESTDIR)$(wpexecbindir)
@list='$(wpexecbin_PROGRAMS)'; for p in $$list; do \ @list='$(wpexecbin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \ if test -f $$p; then \
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(wpexecbindir)/`echo $$p|sed '$(transform)'`"; \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(wpexecbindir)/`echo $$p|sed '$(transform)'`"; \
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(wpexecbindir)/`echo $$p|sed '$(transform)'`; \ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(wpexecbindir)/`echo $$p|sed '$(transform)'`; \
else :; fi; \ else :; fi; \
done done
@@ -245,6 +251,25 @@ distclean-compile:
maintainer-clean-compile: maintainer-clean-compile:
.c.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
.s.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
.S.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
maintainer-clean-libtool:
WPrefs: $(WPrefs_OBJECTS) $(WPrefs_DEPENDENCIES) WPrefs: $(WPrefs_OBJECTS) $(WPrefs_DEPENDENCIES)
@rm -f WPrefs @rm -f WPrefs
$(LINK) $(WPrefs_LDFLAGS) $(WPrefs_OBJECTS) $(WPrefs_LDADD) $(LIBS) $(LINK) $(WPrefs_LDFLAGS) $(WPrefs_OBJECTS) $(WPrefs_LDADD) $(LIBS)
@@ -397,17 +422,20 @@ maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean-am: mostlyclean-wpexecbinPROGRAMS mostlyclean-compile \ mostlyclean-am: mostlyclean-wpexecbinPROGRAMS mostlyclean-compile \
mostlyclean-tags mostlyclean-generic mostlyclean-libtool mostlyclean-tags \
mostlyclean-generic
clean-am: clean-wpexecbinPROGRAMS clean-compile clean-tags \ clean-am: clean-wpexecbinPROGRAMS clean-compile clean-libtool \
clean-generic mostlyclean-am clean-tags clean-generic mostlyclean-am
distclean-am: distclean-wpexecbinPROGRAMS distclean-compile \ distclean-am: distclean-wpexecbinPROGRAMS distclean-compile \
distclean-tags distclean-generic clean-am distclean-libtool distclean-tags distclean-generic \
clean-am
maintainer-clean-am: maintainer-clean-wpexecbinPROGRAMS \ maintainer-clean-am: maintainer-clean-wpexecbinPROGRAMS \
maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-compile maintainer-clean-libtool \
maintainer-clean-generic distclean-am maintainer-clean-tags maintainer-clean-generic \
distclean-am
mostlyclean: mostlyclean-recursive mostlyclean-am mostlyclean: mostlyclean-recursive mostlyclean-am
@@ -415,6 +443,7 @@ clean: clean-recursive clean-am
distclean: distclean-recursive distclean-am distclean: distclean-recursive distclean-am
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-recursive maintainer-clean-am maintainer-clean: maintainer-clean-recursive maintainer-clean-am
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"
@@ -424,11 +453,13 @@ maintainer-clean: maintainer-clean-recursive maintainer-clean-am
clean-wpexecbinPROGRAMS maintainer-clean-wpexecbinPROGRAMS \ clean-wpexecbinPROGRAMS maintainer-clean-wpexecbinPROGRAMS \
uninstall-wpexecbinPROGRAMS install-wpexecbinPROGRAMS \ uninstall-wpexecbinPROGRAMS install-wpexecbinPROGRAMS \
mostlyclean-compile distclean-compile clean-compile \ mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile uninstall-wpdataDATA install-wpdataDATA \ maintainer-clean-compile mostlyclean-libtool distclean-libtool \
install-data-recursive uninstall-data-recursive install-exec-recursive \ clean-libtool maintainer-clean-libtool uninstall-wpdataDATA \
uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ install-wpdataDATA install-data-recursive uninstall-data-recursive \
all-recursive check-recursive installcheck-recursive info-recursive \ install-exec-recursive uninstall-exec-recursive installdirs-recursive \
dvi-recursive mostlyclean-recursive distclean-recursive clean-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 \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info dvi \ distclean-tags clean-tags maintainer-clean-tags distdir info dvi \
installcheck all-am install-exec-am install-data-am uninstall-am \ installcheck all-am install-exec-am install-data-am uninstall-am \

View File

@@ -546,14 +546,23 @@ browserClick(WMWidget *w, void *data)
if (isMenu(item)) { if (isMenu(item)) {
updateForItemType(panel, TNothing); updateForItemType(panel, TNothing);
return;
}
if (WMGetBrowserSelectedColumn(panel->browser)== WMSetPopUpButtonEnabled(panel->cmd2P, True);
WMGetBrowserFirstVisibleColumn(panel->browser)) { return;
} else {
int column = WMGetBrowserSelectedColumn(panel->browser);
if (column == WMGetBrowserNumberOfColumns(panel->browser)-1
&& column > 0)
WMSetPopUpButtonEnabled(panel->cmd2P, True);
else
WMSetPopUpButtonEnabled(panel->cmd2P, False);
if (column==WMGetBrowserFirstVisibleColumn(panel->browser)) {
/* second column is empty, because selected item is not a submenu */ /* second column is empty, because selected item is not a submenu */
WMSetTextFieldText(panel->tit2T, NULL); WMSetTextFieldText(panel->tit2T, NULL);
} }
}
command = getItemCommand(item); command = getItemCommand(item);

View File

@@ -633,8 +633,8 @@ createPanel(Panel *p)
WMSetFrameTitle(panel->menuF, _("Workspace Mouse Actions")); WMSetFrameTitle(panel->menuF, _("Workspace Mouse Actions"));
panel->disaB = WMCreateSwitchButton(panel->menuF); panel->disaB = WMCreateSwitchButton(panel->menuF);
WMResizeWidget(panel->disaB, 185, 19); WMResizeWidget(panel->disaB, 205, 18);
WMMoveWidget(panel->disaB, 20, 20); WMMoveWidget(panel->disaB, 10, 20);
WMSetButtonText(panel->disaB, _("Disable mouse actions")); WMSetButtonText(panel->disaB, _("Disable mouse actions"));
panel->mblL = WMCreateLabel(panel->menuF); panel->mblL = WMCreateLabel(panel->menuF);

View File

@@ -223,7 +223,8 @@ listClick(WMWidget *w, void *data)
static void static void
paintItem(WMList *lPtr, Drawable d, char *text, int state, WMRect *rect) paintItem(WMList *lPtr, int index, Drawable d, char *text, int state,
WMRect *rect)
{ {
int width, height, x, y; int width, height, x, y;
_Panel *panel = (_Panel*)WMGetHangedData(lPtr); _Panel *panel = (_Panel*)WMGetHangedData(lPtr);

View File

@@ -33,6 +33,17 @@ the contents of the ~/GNUstep/Defaults directory before using it.
License
-------
Like Window Maker, WPrefs is distributed with through the General Public
License (as stated in the file COPYING). As an exception, the icons and
original graphical artwork included with WPrefs has the additional
restriction that they must not be redistributed without the rest of the
Window Maker distribution. In other words, you can use and distribute the
WPrefs icons freely, as long as they are distributed for use with Window
Maker (ripping the icons and putting them in your program is prohibited).
Notes Notes
----- -----

View File

@@ -114,7 +114,7 @@ char *WMGetColorWellRGBString(WMColorWell *cPtr) {
*/ */
static void buttonCallback(WMWidget *self, void *data); static void buttonCallback(WMWidget *self, void *data);
static void renderTextureButtons (_TexturePanel *panel); static void renderTextureButtons (_TexturePanel *panel);
static void paintListItem(WMList *lPtr, Drawable d, char *text, int state, WMRect *rect); static void paintListItem(WMList *lPtr, int index, Drawable d, char *text, int state, WMRect *rect);
static void notificationObserver(void *self, WMNotification *notif); static void notificationObserver(void *self, WMNotification *notif);
static void static void
@@ -139,7 +139,7 @@ notificationObserver(void *self, WMNotification *notif)
static void static void
paintListItem(WMList *lPtr, Drawable d, char *text, int state, WMRect *rect) paintListItem(WMList *lPtr, int index, Drawable d, char *text, int state, WMRect *rect)
{ {
WMScreen *scr; WMScreen *scr;
int width, height, x, y; int width, height, x, y;

262
WPrefs.app/Themes.c Normal file
View File

@@ -0,0 +1,262 @@
/* Themes.c- Theme stuff
*
* WPrefs - Window Maker Preferences Program
*
* Copyright (c) 1998 Alfredo K. Kojima
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#include "WPrefs.h"
#include <unistd.h>
typedef struct _Panel {
WMFrame *frame;
char *sectionName;
CallbackRec callbacks;
WMWindow *win;
WMButton *saveB;
WMList *list;
WMButton *loadB;
WMButton *instB;
WMFrame *totF;
WMButton *totB;
WMLabel *totL;
WMFrame *botF;
WMButton *botB;
WMLabel *botL;
pid_t tilePID;
pid_t barPID;
} _Panel;
#define ICON_FILE "theme"
static void
showData(_Panel *panel)
{
}
static void
finishedTileDownload(void *data)
{
_Panel *panel = (_Panel*)data;
WMSetButtonText(panel->totB, _("Set"));
panel->tilePID = 0;
}
static void
finishedBarDownload(void *data)
{
_Panel *panel = (_Panel*)data;
WMSetButtonText(panel->botB, _("Set"));
panel->barPID = 0;
}
static pid_t
downloadFile(WMScreen *scr, _Panel *panel, char *file)
{
pid_t pid;
pid = fork();
if (pid < 0) {
wsyserror("could not fork() process");
WMRunAlertPanel(scr, panel->win, _("Error"),
"Could not start download. fork() failed",
_("OK"), NULL, NULL);
return -1;
}
if (pid != 0) {
return pid;
}
close(ConnectionNumber(WMScreenDisplay(scr)));
exit(1);
}
static void
downloadCallback(WMWidget *w, void *data)
{
_Panel *panel = (_Panel*)data;
pid_t newPid;
WMButton *button = (WMButton*)w;
pid_t *pid;
if (button == panel->totB) {
pid = &panel->tilePID;
} else {
pid = &panel->barPID;
}
if (*pid == 0) {
newPid = downloadFile(WMWidgetScreen(w), panel, NULL);
if (newPid < 0) {
return;
}
WMSetButtonText(button, _("Stop"));
if (button == panel->totB) {
AddDeadChildHandler(newPid, finishedTileDownload, data);
} else {
AddDeadChildHandler(newPid, finishedBarDownload, data);
}
*pid = newPid;
} else {
*pid = 0;
WMSetButtonText(button, _("Download"));
}
}
static void
updateThemeList(_Panel *panel)
{
WMClearList(panel->list);
}
static void
createPanel(Panel *p)
{
_Panel *panel = (_Panel*)p;
WMScreen *scr = WMWidgetScreen(panel->win);
panel->frame = WMCreateFrame(panel->win);
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
panel->saveB = WMCreateCommandButton(panel->frame);
WMResizeWidget(panel->saveB, 154, 24);
WMMoveWidget(panel->saveB, 15, 10);
WMSetButtonText(panel->saveB, _("Save Current Theme"));
panel->list = WMCreateList(panel->frame);
WMResizeWidget(panel->list, 154, 150);
WMMoveWidget(panel->list, 15, 40);
panel->loadB = WMCreateCommandButton(panel->frame);
WMResizeWidget(panel->loadB, 74, 24);
WMMoveWidget(panel->loadB, 15, 200);
WMSetButtonText(panel->loadB, _("Load"));
panel->instB = WMCreateCommandButton(panel->frame);
WMResizeWidget(panel->instB, 74, 24);
WMMoveWidget(panel->instB, 95, 200);
WMSetButtonText(panel->instB, _("Install"));
/**************** Tile of the day ****************/
panel->totF = WMCreateFrame(panel->frame);
WMResizeWidget(panel->totF, 210, 105);
WMMoveWidget(panel->totF, 240, 10);
WMSetFrameTitle(panel->totF, _("Tile of The Day"));
panel->totL = WMCreateLabel(panel->totF);
WMResizeWidget(panel->totL, 67, 67);
WMMoveWidget(panel->totL, 25, 25);
WMSetLabelRelief(panel->totL, WRSunken);
panel->totB = WMCreateCommandButton(panel->totF);
WMResizeWidget(panel->totB, 86, 24);
WMMoveWidget(panel->totB, 105, 45);
WMSetButtonText(panel->totB, _("Download"));
WMSetButtonAction(panel->totB, downloadCallback, panel);
WMMapSubwidgets(panel->totF);
/**************** Bar of the day ****************/
panel->botF = WMCreateFrame(panel->frame);
WMResizeWidget(panel->botF, 315, 95);
WMMoveWidget(panel->botF, 190, 125);
WMSetFrameTitle(panel->botF, _("Bar of The Day"));
panel->botL = WMCreateLabel(panel->botF);
WMResizeWidget(panel->botL, 285, 32);
WMMoveWidget(panel->botL, 15, 20);
WMSetLabelRelief(panel->botL, WRSunken);
panel->botB = WMCreateCommandButton(panel->botF);
WMResizeWidget(panel->botB, 86, 24);
WMMoveWidget(panel->botB, 110, 60);
WMSetButtonText(panel->botB, _("Download"));
WMSetButtonAction(panel->botB, downloadCallback, panel);
WMMapSubwidgets(panel->botF);
WMRealizeWidget(panel->frame);
WMMapSubwidgets(panel->frame);
showData(panel);
}
static void
storeData(_Panel *panel)
{
}
Panel*
InitThemes(WMScreen *scr, WMWindow *win)
{
_Panel *panel;
panel = wmalloc(sizeof(_Panel));
memset(panel, 0, sizeof(_Panel));
panel->sectionName = _("Themes");
panel->win = win;
panel->callbacks.createWidgets = createPanel;
panel->callbacks.updateDomain = storeData;
AddSection(panel, ICON_FILE);
return panel;
}

View File

@@ -39,8 +39,6 @@ extern Panel *InitFocus(WMScreen *scr, WMWindow *win);
extern Panel *InitPreferences(WMScreen *scr, WMWindow *win); extern Panel *InitPreferences(WMScreen *scr, WMWindow *win);
extern Panel *InitTextureAndColor(WMScreen *scr, WMWindow *win);
extern Panel *InitText(WMScreen *scr, WMWindow *win); extern Panel *InitText(WMScreen *scr, WMWindow *win);
extern Panel *InitConfigurations(WMScreen *scr, WMWindow *win); extern Panel *InitConfigurations(WMScreen *scr, WMWindow *win);
@@ -55,6 +53,13 @@ extern Panel *InitMenuPreferences(WMScreen *scr, WMWindow *win);
extern Panel *InitIcons(WMScreen *scr, WMWindow *win); extern Panel *InitIcons(WMScreen *scr, WMWindow *win);
extern Panel *InitThemes(WMScreen *scr, WMWindow *win);
extern Panel *InitTextureAndColor(WMScreen *scr, WMWindow *win);
extern Panel *InitAppearance(WMScreen *scr, WMWindow *win);
#define MAX_SECTIONS 16 #define MAX_SECTIONS 16
@@ -506,15 +511,21 @@ Initialize(WMScreen *scr)
#endif #endif
InitKeyboardShortcuts(scr, WPrefs.win); InitKeyboardShortcuts(scr, WPrefs.win);
InitMouseSettings(scr, WPrefs.win); InitMouseSettings(scr, WPrefs.win);
#ifdef not_yet_fully_implemented #ifdef not_yet_fully_implemented
InitTextureAndColor(scr, WPrefs.win); InitAppearance(scr, WPrefs.win);
InitText(scr, WPrefs.win); InitText(scr, WPrefs.win);
InitThemes(scr, WPrefs.win);
#endif #endif
InitExpert(scr, WPrefs.win); InitExpert(scr, WPrefs.win);
WMRealizeWidget(WPrefs.scrollV); WMRealizeWidget(WPrefs.scrollV);
WMSetLabelText(WPrefs.statusL, "This program is still under development. Backup your ~/GNUstep/Defaults directory, before using it."); WMSetLabelText(WPrefs.statusL,
"WPrefs is free software and is distributed WITHOUT ANY "
"WARRANTY under the terms of the GNU General Public License."
"Redistribution of the icons in this program separately from the program itself is prohibited.");
} }
@@ -555,7 +566,7 @@ loadConfigurations(WMScreen *scr, WMWindow *mainw)
file = popen("wmaker -version", "r"); file = popen("wmaker -version", "r");
if (!file || !fgets(buffer, 1023, file)) { if (!file || !fgets(buffer, 1023, file)) {
wsyserror(_("could not extract version information from Window Maker")); wsyserror(_("could not extract version information from Window Maker"));
wfatal(_("Make sure Window Maker is in your search path.")); wfatal(_("Make sure wmaker is in your search path."));
WMRunAlertPanel(scr, mainw, _("Error"), WMRunAlertPanel(scr, mainw, _("Error"),
_("Could not extract version from Window Maker. Make sure it is correctly installed and is in your PATH environment variable."), _("Could not extract version from Window Maker. Make sure it is correctly installed and is in your PATH environment variable."),

View File

@@ -26,6 +26,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <signal.h>
#include <X11/Xlib.h> #include <X11/Xlib.h>
@@ -36,8 +37,12 @@
#include <WINGs.h> #include <WINGs.h>
#include <WUtil.h> #include <WUtil.h>
/** some config options **/
#undef EXTEND_WINDOWSHORTCUT
#define WVERSION "0.8" /****/
#define WVERSION "0.9"
#define WMVERSION "0.20.x" #define WMVERSION "0.20.x"
@@ -63,6 +68,7 @@ typedef struct PanelRec {
} PanelRec; } PanelRec;
void AddSection(Panel *panel, char *iconFile); void AddSection(Panel *panel, char *iconFile);
char *LocateImage(char *name); char *LocateImage(char *name);
@@ -93,6 +99,11 @@ void SetBoolForKey(Bool value, char *defaultName);
void SetSpeedForKey(int speed, char *defaultName); void SetSpeedForKey(int speed, char *defaultName);
void AddDeadChildHandler(pid_t pid, void (*handler)(void*), void *data);
#define FRAME_TOP 105 #define FRAME_TOP 105
#define FRAME_LEFT -2 #define FRAME_LEFT -2
#define FRAME_WIDTH 524 #define FRAME_WIDTH 524

View File

@@ -21,11 +21,27 @@
#include "WPrefs.h" #include "WPrefs.h"
#include <assert.h>
#include <X11/Xlocale.h> #include <X11/Xlocale.h>
#include <sys/wait.h>
#include <unistd.h>
extern void Initialize(WMScreen *scr); extern void Initialize(WMScreen *scr);
#define MAX_DEATHS 64
struct {
pid_t pid;
void *data;
void (*handler)(void*);
} DeadHandlers[MAX_DEATHS];
static pid_t DeadChildren[MAX_DEATHS];
static int DeadChildrenCount = 0;
void void
@@ -60,6 +76,38 @@ print_help(char *progname)
} }
static RETSIGTYPE
handleDeadChild(int sig)
{
pid_t pid;
int status;
pid = waitpid(-1, &status, WNOHANG);
if (pid > 0) {
DeadChildren[DeadChildrenCount++] = pid;
}
}
void
AddDeadChildHandler(pid_t pid, void (*handler)(void*), void *data)
{
int i;
for (i = 0; i < MAX_DEATHS; i++) {
if (DeadHandlers[i].pid == 0) {
DeadHandlers[i].pid = pid;
DeadHandlers[i].handler = handler;
DeadHandlers[i].data = data;
break;
}
}
assert(i!=MAX_DEATHS);
}
int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
@@ -69,6 +117,8 @@ main(int argc, char **argv)
int i; int i;
char *display_name=""; char *display_name="";
memset(DeadHandlers, 0, sizeof(DeadHandlers));
WMInitializeApplication("WPrefs", &argc, argv); WMInitializeApplication("WPrefs", &argc, argv);
if (argc>1) { if (argc>1) {
@@ -130,6 +180,18 @@ main(int argc, char **argv)
XEvent event; XEvent event;
WMNextEvent(dpy, &event); WMNextEvent(dpy, &event);
while (DeadChildrenCount-- > 0) {
int i;
for (i=0; i<MAX_DEATHS; i++) {
if (DeadChildren[i] == DeadHandlers[i].pid) {
(*DeadHandlers[i].handler)(DeadHandlers[i].data);
DeadHandlers[i].pid = 0;
}
}
}
WMHandleEvent(&event); WMHandleEvent(&event);
} }
} }

View File

@@ -10,6 +10,7 @@ POTFILES = \
$(top_builddir)/WPrefs/Configurations.c \ $(top_builddir)/WPrefs/Configurations.c \
$(top_builddir)/WPrefs/Expert.c \ $(top_builddir)/WPrefs/Expert.c \
$(top_builddir)/WPrefs/Focus.c \ $(top_builddir)/WPrefs/Focus.c \
$(top_builddir)/WPrefs/Icons.c \
$(top_builddir)/WPrefs/KeyboardSettings.c \ $(top_builddir)/WPrefs/KeyboardSettings.c \
$(top_builddir)/WPrefs/KeyboardShortcuts.c \ $(top_builddir)/WPrefs/KeyboardShortcuts.c \
$(top_builddir)/WPrefs/Menu.c \ $(top_builddir)/WPrefs/Menu.c \
@@ -20,6 +21,7 @@ POTFILES = \
$(top_builddir)/WPrefs/Preferences.c \ $(top_builddir)/WPrefs/Preferences.c \
$(top_builddir)/WPrefs/Text.c \ $(top_builddir)/WPrefs/Text.c \
$(top_builddir)/WPrefs/TextureAndColor.c \ $(top_builddir)/WPrefs/TextureAndColor.c \
$(top_builddir)/WPrefs/Themes.c \
$(top_builddir)/WPrefs/WPrefs.c \ $(top_builddir)/WPrefs/WPrefs.c \
$(top_builddir)/WPrefs/WindowHandling.c \ $(top_builddir)/WPrefs/WindowHandling.c \
$(top_builddir)/WPrefs/Workspace.c \ $(top_builddir)/WPrefs/Workspace.c \

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -102,6 +105,7 @@ POTFILES = \
$(top_builddir)/WPrefs/Configurations.c \ $(top_builddir)/WPrefs/Configurations.c \
$(top_builddir)/WPrefs/Expert.c \ $(top_builddir)/WPrefs/Expert.c \
$(top_builddir)/WPrefs/Focus.c \ $(top_builddir)/WPrefs/Focus.c \
$(top_builddir)/WPrefs/Icons.c \
$(top_builddir)/WPrefs/KeyboardSettings.c \ $(top_builddir)/WPrefs/KeyboardSettings.c \
$(top_builddir)/WPrefs/KeyboardShortcuts.c \ $(top_builddir)/WPrefs/KeyboardShortcuts.c \
$(top_builddir)/WPrefs/Menu.c \ $(top_builddir)/WPrefs/Menu.c \
@@ -112,6 +116,7 @@ POTFILES = \
$(top_builddir)/WPrefs/Preferences.c \ $(top_builddir)/WPrefs/Preferences.c \
$(top_builddir)/WPrefs/Text.c \ $(top_builddir)/WPrefs/Text.c \
$(top_builddir)/WPrefs/TextureAndColor.c \ $(top_builddir)/WPrefs/TextureAndColor.c \
$(top_builddir)/WPrefs/Themes.c \
$(top_builddir)/WPrefs/WPrefs.c \ $(top_builddir)/WPrefs/WPrefs.c \
$(top_builddir)/WPrefs/WindowHandling.c \ $(top_builddir)/WPrefs/WindowHandling.c \
$(top_builddir)/WPrefs/Workspace.c \ $(top_builddir)/WPrefs/Workspace.c \
@@ -196,6 +201,7 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -250,6 +253,7 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -250,6 +253,7 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,6 +1,6 @@
defsdatadir = $(pkgdatadir)/Backgrounds defsdatadir = $(pkgdatadir)/Backgrounds
defsdata_DATA = BlueImage.jpeg SeaNight.jpeg BlueWaves.jpeg defsdata_DATA = BlueImage.jpeg
EXTRA_DIST = $(defsdata_DATA) EXTRA_DIST = $(defsdata_DATA)

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -92,7 +95,7 @@ wprefsdir = @wprefsdir@
defsdatadir = $(pkgdatadir)/Backgrounds defsdatadir = $(pkgdatadir)/Backgrounds
defsdata_DATA = BlueImage.jpeg SeaNight.jpeg BlueWaves.jpeg defsdata_DATA = BlueImage.jpeg
EXTRA_DIST = $(defsdata_DATA) EXTRA_DIST = $(defsdata_DATA)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -193,6 +196,7 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -195,6 +198,7 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

View File

@@ -2,7 +2,7 @@
Dock = { Dock = {
Applications = ( Applications = (
{ {
Command = ""; Command = "-";
Name = Logo.WMDock; Name = Logo.WMDock;
AutoLaunch = No; AutoLaunch = No;
Forced = No; Forced = No;

View File

@@ -2,7 +2,7 @@
Dock = { Dock = {
Applications = ( Applications = (
{ {
Command = ""; Command = "-";
Name = Logo.WMDock; Name = Logo.WMDock;
AutoLaunch = No; AutoLaunch = No;
Forced = No; Forced = No;

View File

@@ -6,6 +6,13 @@
WMSoundServer = {Icon = Sound.tiff;}; WMSoundServer = {Icon = Sound.tiff;};
XTerm = {Icon = GNUterm.tiff;}; XTerm = {Icon = GNUterm.tiff;};
NXTerm = {Icon = GNUterm.tiff;}; NXTerm = {Icon = GNUterm.tiff;};
ScilabGraphic0.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic1.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic2.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic3.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic4.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic5.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic6.Xscilab = {KeepInsideScreen=YES;};
xcalc = {AlwaysUserIcon = Yes;Icon = "HP-16C-48.xpm";}; xcalc = {AlwaysUserIcon = Yes;Icon = "HP-16C-48.xpm";};
Netscape = {Icon = Netscape.xpm;}; Netscape = {Icon = Netscape.xpm;};
Emacs = {Icon = ColorGNU.xpm;}; Emacs = {Icon = ColorGNU.xpm;};

View File

@@ -6,6 +6,13 @@
WMSoundServer = {Icon = Sound.#extension#;}; WMSoundServer = {Icon = Sound.#extension#;};
XTerm = {Icon = GNUterm.#extension#;}; XTerm = {Icon = GNUterm.#extension#;};
NXTerm = {Icon = GNUterm.#extension#;}; NXTerm = {Icon = GNUterm.#extension#;};
ScilabGraphic0.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic1.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic2.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic3.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic4.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic5.Xscilab = {KeepInsideScreen=YES;};
ScilabGraphic6.Xscilab = {KeepInsideScreen=YES;};
xcalc = {AlwaysUserIcon = Yes;Icon = "HP-16C-48.xpm";}; xcalc = {AlwaysUserIcon = Yes;Icon = "HP-16C-48.xpm";};
Netscape = {Icon = Netscape.xpm;}; Netscape = {Icon = Netscape.xpm;};
Emacs = {Icon = ColorGNU.xpm;}; Emacs = {Icon = ColorGNU.xpm;};

View File

@@ -1,15 +1,15 @@
defsdatadir = $(pkgdatadir)/IconSets defsdatadir = $(pkgdatadir)/IconSets
defsdata_DATA = Default defsdata_DATA = Default.iconset
EXTRA_DIST = EXTRA_DIST =
CLEANFILES = Default CLEANFILES = Default.iconset
Default: $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes ./Makefile Default.iconset: $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes ./Makefile
-rm -f Default -rm -f Default.iconset
cp $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes Default cp $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes Default.iconset
chmod 644 Default chmod 644 Default.iconset

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -92,11 +95,11 @@ wprefsdir = @wprefsdir@
defsdatadir = $(pkgdatadir)/IconSets defsdatadir = $(pkgdatadir)/IconSets
defsdata_DATA = Default defsdata_DATA = Default.iconset
EXTRA_DIST = EXTRA_DIST =
CLEANFILES = Default CLEANFILES = Default.iconset
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../../src/config.h CONFIG_HEADER = ../../src/config.h
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
@@ -195,6 +198,7 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"
@@ -206,10 +210,10 @@ installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean maintainer-clean-generic clean mostlyclean distclean maintainer-clean
Default: $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes ./Makefile Default.iconset: $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes ./Makefile
-rm -f Default -rm -f Default.iconset
cp $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes Default cp $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes Default.iconset
chmod 644 Default chmod 644 Default.iconset
# Tell versions [3.59,3.63) of GNU make to not export all variables. # 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. # Otherwise a system limit (for SysV at least) may be exceeded.

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -202,6 +205,7 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

View File

@@ -1,14 +1,37 @@
SUBDIRS = Defaults Styles Themes Icons Pixmaps Backgrounds IconSets SUBDIRS = Backgrounds Defaults IconSets Icons Pixmaps Styles Themes
prefsdatadir = $(pkgdatadir) prefsdatadir = $(pkgdatadir)
prefsdata_DATA = wmmacros README menu plmenu autostart.sh exitscript.sh \ prefsdata_DATA =\
menu.cz menu.de menu.fr menu.gl menu.ja menu.ko menu.nl menu.pt \ README\
menu.it menu.no menu.he menu.es menu.ru menu.tr menu.el menu.se \ README.themes\
menu.fi menu.hr menu.dk menu.sl autostart.sh\
exitscript.sh\
menu\
menu.cz\
menu.de\
menu.dk\
menu.el\
menu.es\
menu.fi\
menu.fr\
menu.gl\
menu.he\
menu.hr\
menu.hu\
menu.it\
menu.ja\
menu.ko\
menu.nl\
menu.no\
menu.pt\
menu.ru\
menu.se\
menu.sl\
menu.tr
EXTRA_DIST = $(prefsdata_DATA) mkMakefile wmmacros.in plmenu.in\
EXTRA_DIST = $(prefsdata_DATA) wmmacros.in plmenu.in plmenu.fr.in plmenu.hr.in plmenu.fr.in plmenu.hr.in
CLEANFILES = wmmacros plmenu CLEANFILES = wmmacros plmenu
@@ -19,7 +42,6 @@ wmmacros: $(srcdir)/wmmacros.in ./Makefile
$(srcdir)/wmmacros.in > wmmacros; \ $(srcdir)/wmmacros.in > wmmacros; \
chmod 644 wmmacros chmod 644 wmmacros
plmenu: $(srcdir)/plmenu.in ./Makefile plmenu: $(srcdir)/plmenu.in ./Makefile
-rm -f plmenu -rm -f plmenu

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -90,16 +93,40 @@ X_LOCALE = @X_LOCALE@
pixmapdir = @pixmapdir@ pixmapdir = @pixmapdir@
wprefsdir = @wprefsdir@ wprefsdir = @wprefsdir@
SUBDIRS = Defaults Styles Themes Icons Pixmaps Backgrounds IconSets SUBDIRS = Backgrounds Defaults IconSets Icons Pixmaps Styles Themes
prefsdatadir = $(pkgdatadir) prefsdatadir = $(pkgdatadir)
prefsdata_DATA = wmmacros README menu plmenu autostart.sh exitscript.sh \ prefsdata_DATA =\
menu.cz menu.de menu.fr menu.gl menu.ja menu.ko menu.nl menu.pt \ README\
menu.it menu.no menu.he menu.es menu.ru menu.tr menu.el menu.se \ README.themes\
menu.fi menu.hr menu.dk menu.sl autostart.sh\
exitscript.sh\
menu\
menu.cz\
menu.de\
menu.dk\
menu.el\
menu.es\
menu.fi\
menu.fr\
menu.gl\
menu.he\
menu.hr\
menu.hu\
menu.it\
menu.ja\
menu.ko\
menu.nl\
menu.no\
menu.pt\
menu.ru\
menu.se\
menu.sl\
menu.tr
EXTRA_DIST = $(prefsdata_DATA) wmmacros.in plmenu.in plmenu.fr.in plmenu.hr.in EXTRA_DIST = $(prefsdata_DATA) mkMakefile wmmacros.in plmenu.in\
plmenu.fr.in plmenu.hr.in
CLEANFILES = wmmacros plmenu CLEANFILES = wmmacros plmenu
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -285,6 +312,7 @@ clean: clean-recursive clean-am
distclean: distclean-recursive distclean-am distclean: distclean-recursive distclean-am
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-recursive maintainer-clean-am maintainer-clean: maintainer-clean-recursive maintainer-clean-am
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -194,6 +197,7 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"

85
WindowMaker/README.themes Normal file
View File

@@ -0,0 +1,85 @@
Themes For Window Maker
=======================
Note: the information contained in this file is only valid for themes
in the .themed (for theme directory) format, supported in
Window Maker 0.20.4 or newer.
How To Install a Theme Pack
===========================
To install a theme, unpack your theme into your theme directory,
usually ~/GNUstep/Library/WindowMaker/Themes
cd ~/GNUstep/Library/WindowMaker/Themes
gunzip -c xyztheme.tar.gz | tar xf -
How To Load a Theme
===================
Use the setstyle command to load a theme. Example:
setstyle xyztheme.themed
Note that if you move the directory of the theme (for example, from
~/GNUstep/Library/WindowMaker/Themes to /usr/local/share/WindowMaker/Themes)
you will have to reload that theme so that path information is updated.
How To Make a Theme Pack
========================
To create a theme pack from your current configuration, use the getstyle
utility with the -p flag. Example:
getstyle -p MyTheme
This will create a theme pack named MyTheme.themed, containing everything
it requires, including all pixmap files.
Additionally, you can put a text file named MyTheme.lsm in the MyTheme.themed
directory. This file can contain info like copyrights, credits or whatever.
To distribute your theme, just make a .tar.gz of the .themed directory.
Example:
tar cf MyTheme.tar MyTheme.themed
gzip MyTheme.tar
How To Delete a Theme Pack
==========================
Just remove the .themed directory. Example:
cd ~/GNUstep/Library/WindowMaker/Themes
rm -fr themename.themed
How To Save Disk Space
======================
If you have more than 1 theme that use the same huge background image,
you can delete all the duplicated files and then create hard links in
place of them. For example, if you have:
theme1.themed/back.jpg
theme2.themed/backimage.jpg
theme3.themed/back.jpg
and all three files contain the same image, you can do:
rm theme2.themed/backimage.jpg
rm theme3.themed/back.jpg
ln theme1.themed/back.jpg theme2.themed/backimage.jpg
ln theme1.themed/back.jpg theme3.themed/back.jpg

View File

View File

View File

@@ -0,0 +1,19 @@
{
TitleJustify = center;
HighlightColor = white;
HighlightTextColor = black;
ClipTitleColor = white;
CClipTitleColor = gray60;
FTitleColor = white;
PTitleColor = white;
UTitleColor = gray20;
FTitleBack = (thgradient, "BlueImage.jpeg", 140, "rgb:30/32/3e", black);
PTitleBack = (thgradient,"BlueImage.jpeg",140,"rgb:70/72/7e","rgb:45/47/4e");
UTitleBack = (thgradient,"BlueImage.jpeg", 100,white,"rgb:9e/94/80");
MenuTitleColor = white;
MenuTextColor = white;
MenuDisabledColor = gray60;
MenuTitleBack = (thgradient, "BlueImage.jpeg", 140, "rgb:30/32/3e", black);
MenuTextBack = (thgradient,"BlueImage.jpeg",140,"rgb:50/5a/5e","rgb:20/2a/2e");
IconBack = (tdgradient, "BlueImage.jpeg", 140, "rgb:30/32/3e", black);
}

View File

@@ -10,4 +10,6 @@ UTitleBack = (hgradient, "rgb:90/90/90", "rgb:c0/c0/c0");
PTitleBack = (hgradient, "rgb:50/50/50", "rgb:80/80/80"); PTitleBack = (hgradient, "rgb:50/50/50", "rgb:80/80/80");
MenuTitleBack = (hgradient, "rgb:20/20/70", "rgb:00/00/20"); MenuTitleBack = (hgradient, "rgb:20/20/70", "rgb:00/00/20");
MenuTextBack = (hgradient, "rgb:c0/c0/c0", "rgb:90/90/90"); MenuTextBack = (hgradient, "rgb:c0/c0/c0", "rgb:90/90/90");
IconTitleBack = "#101040";
IconTitleColor = white;
} }

View File

@@ -1,16 +0,0 @@
{
HighlightColor = white;
HighlightTextColor = black;
FTitleColor = "white";
PTitleColor = "white";
UTitleColor = "gray";
MenuTitleColor = "white";
MenuDisabledColor = "gray50";
MenuTextColor = "white";
FTitleBack = (hgradient, "rgb:20/24/40","rgb:69/a6/e7");
UTitleBack = (hgradient, "rgb:00/04/20","rgb:37/57/79");
PTitleBack = (hgradient, "rgb:10/10/30","rgb:49/86/c7");
MenuTitleBack = (hgradient, "rgb:20/24/40","rgb:69/a6/e7");
MenuTextBack = (hgradient, "rgb:00/00/10","rgb:59/96/d7");
}

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

@@ -1,33 +1,33 @@
defsdatadir = $(pkgdatadir)/Styles
defsdata_DATA = \ prefsdatadir = $(pkgdatadir)/Styles
Autumn\
Black\ prefsdata_DATA =\
Blue\ Autumn.style\
BlueAluminum\ Black.style\
BlueDawn\ BlackTexture.style\
BlueishGreen\ Blue.style\
Brown\ BlueDawn.style\
Chumbo\ BlueishGreen.style\
Copper\ Brown.style\
DarkBlue\ Chumbo.style\
DarkRed\ Copper.style\
Fire\ DarkBlue.style\
Food\ DarkRed.style\
Golden\ Fire.style\
Green\ Food.style\
GreyBlue\ Golden.style\
Gtk\ Green.style\
LightBlue\ GreyBlue.style\
Pastel\ Gtk.style\
Pink\ LightBlue.style\
Pumpkin\ Pastel.style\
Purple\ Purple.style\
Red\ Red.style\
RednBlue\ RednBlue.style\
ShinyBrown\ Summer.style\
Summer\ Traditional.style\
Traditional\ VioletBlue.style
VioletBlue
EXTRA_DIST = $(prefsdata_DATA)
EXTRA_DIST = $(defsdata_DATA)

View File

@@ -69,6 +69,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@ I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@ ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@ INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@ LN_S = @LN_S@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@ MOFILES = @MOFILES@
@@ -90,43 +93,40 @@ X_LOCALE = @X_LOCALE@
pixmapdir = @pixmapdir@ pixmapdir = @pixmapdir@
wprefsdir = @wprefsdir@ wprefsdir = @wprefsdir@
defsdatadir = $(pkgdatadir)/Styles prefsdatadir = $(pkgdatadir)/Styles
defsdata_DATA = \ prefsdata_DATA =\
Autumn\ Autumn.style\
Black\ Black.style\
Blue\ BlackTexture.style\
BlueAluminum\ Blue.style\
BlueDawn\ BlueDawn.style\
BlueishGreen\ BlueishGreen.style\
Brown\ Brown.style\
Chumbo\ Chumbo.style\
Copper\ Copper.style\
DarkBlue\ DarkBlue.style\
DarkRed\ DarkRed.style\
Fire\ Fire.style\
Food\ Food.style\
Golden\ Golden.style\
Green\ Green.style\
GreyBlue\ GreyBlue.style\
Gtk\ Gtk.style\
LightBlue\ LightBlue.style\
Pastel\ Pastel.style\
Pink\ Purple.style\
Pumpkin\ Red.style\
Purple\ RednBlue.style\
Red\ Summer.style\
RednBlue\ Traditional.style\
ShinyBrown\ VioletBlue.style
Summer\
Traditional\
VioletBlue
EXTRA_DIST = $(defsdata_DATA) EXTRA_DIST = $(prefsdata_DATA)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../../src/config.h CONFIG_HEADER = ../../src/config.h
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
DATA = $(defsdata_DATA) DATA = $(prefsdata_DATA)
DIST_COMMON = Makefile.am Makefile.in DIST_COMMON = Makefile.am Makefile.in
@@ -146,23 +146,23 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
install-defsdataDATA: $(defsdata_DATA) install-prefsdataDATA: $(prefsdata_DATA)
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(defsdatadir) $(mkinstalldirs) $(DESTDIR)$(prefsdatadir)
@list='$(defsdata_DATA)'; for p in $$list; do \ @list='$(prefsdata_DATA)'; for p in $$list; do \
if test -f $(srcdir)/$$p; then \ if test -f $(srcdir)/$$p; then \
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(defsdatadir)/$$p"; \ echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(prefsdatadir)/$$p"; \
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(defsdatadir)/$$p; \ $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(prefsdatadir)/$$p; \
else if test -f $$p; then \ else if test -f $$p; then \
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(defsdatadir)/$$p"; \ echo " $(INSTALL_DATA) $$p $(DESTDIR)$(prefsdatadir)/$$p"; \
$(INSTALL_DATA) $$p $(DESTDIR)$(defsdatadir)/$$p; \ $(INSTALL_DATA) $$p $(DESTDIR)$(prefsdatadir)/$$p; \
fi; fi; \ fi; fi; \
done done
uninstall-defsdataDATA: uninstall-prefsdataDATA:
@$(NORMAL_UNINSTALL) @$(NORMAL_UNINSTALL)
list='$(defsdata_DATA)'; for p in $$list; do \ list='$(prefsdata_DATA)'; for p in $$list; do \
rm -f $(DESTDIR)$(defsdatadir)/$$p; \ rm -f $(DESTDIR)$(prefsdatadir)/$$p; \
done done
tags: TAGS tags: TAGS
TAGS: TAGS:
@@ -187,18 +187,18 @@ installcheck:
install-exec: install-exec:
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
install-data: install-defsdataDATA install-data: install-prefsdataDATA
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
install: install-exec install-data all install: install-exec install-data all
@: @:
uninstall: uninstall-defsdataDATA uninstall: uninstall-prefsdataDATA
install-strip: install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs: installdirs:
$(mkinstalldirs) $(DATADIR)$(defsdatadir) $(mkinstalldirs) $(DATADIR)$(prefsdatadir)
mostlyclean-generic: mostlyclean-generic:
@@ -221,12 +221,13 @@ clean: clean-generic mostlyclean
distclean: distclean-generic clean distclean: distclean-generic clean
-rm -f config.status -rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-generic distclean maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild." @echo "it deletes files that may require special tools to rebuild."
.PHONY: uninstall-defsdataDATA install-defsdataDATA tags distdir info \ .PHONY: uninstall-prefsdataDATA install-prefsdataDATA tags distdir info \
dvi installcheck install-exec install-data install uninstall all \ dvi installcheck install-exec install-data install uninstall all \
installdirs mostlyclean-generic distclean-generic clean-generic \ installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean maintainer-clean-generic clean mostlyclean distclean maintainer-clean

View File

View File

@@ -1,16 +0,0 @@
{
HighlightColor = white;
HighlightTextColor = black;
TitleJustify = center;
FTitleColor = gray40;
PTitleColor = gray;
UTitleColor = gray;
FTitleBack = (hgradient, white, pink);
PTitleBack = (hgradient, pink, pink2);
UTitleBack = (hgradient, pink3, pink4);
MenuTitleColor = white;
MenuTextColor = white;
MenuDisabledColor = gray60;
MenuTitleBack = (hgradient, pink2, pink4);
MenuTextBack = (hgradient, pink4, black);
}

View File

@@ -1,19 +0,0 @@
{
TitleJustify = center;
HighlightColor = white;
HighlightTextColor = black;
ClipTitleColor = white;
CClipTitleColor = gray20;
FTitleColor = white;
PTitleColor = gray60;
UTitleColor = gray60;
FTitleBack = (hgradient, orange2, orange4);
PTitleBack = (hgradient, orange4, black);
UTitleBack = (hgradient, "rgb:18/38/59", black);
MenuTitleColor = white;
MenuTextColor = white;
MenuDisabledColor = gray60;
MenuTitleBack = (hgradient, orange2, orange4);
MenuTextBack = (hgradient, "rgb:18/38/59", "rgb:00/14/28");
IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61");
}

View File

View File

View File

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