1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-02-02 22:25:48 +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

View File

@@ -13,7 +13,7 @@ INCLUDES = @DFLAGS@ -I$(top_srcdir)/wrlib -I$(top_srcdir)/libPropList\
@XCFLAGS@ @GFXFLAGS@
# X_EXTRA_LIBS is for libproplist in systems that need -lsocket
liblist= -L$(top_builddir)/libPropList -lPropList @X_EXTRA_LIBS@
liblist= $(top_builddir)/libPropList/libPropList.la @X_EXTRA_LIBS@
wdwrite_LDADD = $(liblist)
@@ -30,8 +30,9 @@ seticons_LDADD= $(liblist)
geticonset_LDADD= $(liblist)
wmsetbg_LDADD = -L$(top_builddir)/libPropList -lPropList \
-L$(top_builddir)/wrlib -lwraster \
wmsetbg_LDADD = $(top_builddir)/libPropList/libPropList.la \
$(top_builddir)/wrlib/libwraster.la \
$(top_builddir)/WINGs/libWINGs.a \
@GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ -lm
getstyle_SOURCES = getstyle.c
@@ -57,6 +58,7 @@ wmaker.inst: $(srcdir)/wmaker.inst.in ./Makefile
sed -e "s:#pkgdatadir#:$(pkgdatadir):" \
-e "s/#version#/$(VERSION)/" \
-e "s:#bindir#:$(bindir):" \
-e "s:#LITE#:@LITE@:" \
$(srcdir)/wmaker.inst.in >wmaker.inst
chmod 755 wmaker.inst

View File

@@ -67,6 +67,9 @@ I18N = @I18N@
I18N_MB = @I18N_MB@
ICONEXT = @ICONEXT@
INTLIBS = @INTLIBS@
LD = @LD@
LIBTOOL = @LIBTOOL@
LITE = @LITE@
LN_S = @LN_S@
MAKEINFO = @MAKEINFO@
MOFILES = @MOFILES@
@@ -102,7 +105,7 @@ INCLUDES = @DFLAGS@ -I$(top_srcdir)/wrlib -I$(top_srcdir)/libPropList\
@XCFLAGS@ @GFXFLAGS@
# X_EXTRA_LIBS is for libproplist in systems that need -lsocket
liblist= -L$(top_builddir)/libPropList -lPropList @X_EXTRA_LIBS@
liblist= $(top_builddir)/libPropList/libPropList.la @X_EXTRA_LIBS@
wdwrite_LDADD = $(liblist)
@@ -118,8 +121,9 @@ seticons_LDADD= $(liblist)
geticonset_LDADD= $(liblist)
wmsetbg_LDADD = -L$(top_builddir)/libPropList -lPropList \
-L$(top_builddir)/wrlib -lwraster \
wmsetbg_LDADD = $(top_builddir)/libPropList/libPropList.la \
$(top_builddir)/wrlib/libwraster.la \
$(top_builddir)/WINGs/libWINGs.a \
@GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ -lm
getstyle_SOURCES = getstyle.c
@@ -159,28 +163,30 @@ wxpaste_OBJECTS = wxpaste.o
wxpaste_DEPENDENCIES =
wxpaste_LDFLAGS =
wdwrite_OBJECTS = wdwrite.o
wdwrite_DEPENDENCIES =
wdwrite_DEPENDENCIES = $(top_builddir)/libPropList/libPropList.la
wdwrite_LDFLAGS =
getstyle_OBJECTS = getstyle.o
getstyle_DEPENDENCIES =
getstyle_DEPENDENCIES = $(top_builddir)/libPropList/libPropList.la
getstyle_LDFLAGS =
setstyle_OBJECTS = setstyle.o
setstyle_DEPENDENCIES =
setstyle_DEPENDENCIES = $(top_builddir)/libPropList/libPropList.la
setstyle_LDFLAGS =
seticons_OBJECTS = seticons.o
seticons_DEPENDENCIES =
seticons_DEPENDENCIES = $(top_builddir)/libPropList/libPropList.la
seticons_LDFLAGS =
geticonset_OBJECTS = geticonset.o
geticonset_DEPENDENCIES =
geticonset_DEPENDENCIES = $(top_builddir)/libPropList/libPropList.la
geticonset_LDFLAGS =
wmsetbg_OBJECTS = wmsetbg.o
wmsetbg_DEPENDENCIES =
wmsetbg_DEPENDENCIES = $(top_builddir)/libPropList/libPropList.la \
$(top_builddir)/wrlib/libwraster.la $(top_builddir)/WINGs/libWINGs.a
wmsetbg_LDFLAGS =
SCRIPTS = $(bin_SCRIPTS)
CFLAGS = @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 $@
DIST_COMMON = README Makefile.am Makefile.in
@@ -194,7 +200,7 @@ OBJECTS = $(wxcopy_OBJECTS) $(wxpaste_OBJECTS) $(wdwrite_OBJECTS) $(getstyle_OBJ
all: Makefile $(PROGRAMS) $(SCRIPTS)
.SUFFIXES:
.SUFFIXES: .S .c .o .s
.SUFFIXES: .S .c .lo .o .s
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile
@@ -217,8 +223,8 @@ install-binPROGRAMS: $(bin_PROGRAMS)
$(mkinstalldirs) $(DESTDIR)$(bindir)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
else :; fi; \
done
@@ -247,6 +253,25 @@ distclean-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:
wxcopy: $(wxcopy_OBJECTS) $(wxcopy_DEPENDENCIES)
@rm -f wxcopy
$(LINK) $(wxcopy_LDFLAGS) $(wxcopy_OBJECTS) $(wxcopy_LDADD) $(LIBS)
@@ -371,30 +396,33 @@ maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-binPROGRAMS mostlyclean-compile \
mostlyclean-tags mostlyclean-generic
mostlyclean-libtool mostlyclean-tags \
mostlyclean-generic
clean: clean-binPROGRAMS clean-compile clean-tags clean-generic \
mostlyclean
clean: clean-binPROGRAMS clean-compile clean-libtool clean-tags \
clean-generic mostlyclean
distclean: distclean-binPROGRAMS distclean-compile distclean-tags \
distclean-generic clean
distclean: distclean-binPROGRAMS distclean-compile distclean-libtool \
distclean-tags distclean-generic clean
-rm -f config.status
-rm -f libtool
maintainer-clean: maintainer-clean-binPROGRAMS maintainer-clean-compile \
maintainer-clean-tags maintainer-clean-generic \
distclean
maintainer-clean-libtool maintainer-clean-tags \
maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile uninstall-binSCRIPTS install-binSCRIPTS tags \
mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \
distdir info dvi installcheck install-exec install-data install \
uninstall all installdirs mostlyclean-generic distclean-generic \
clean-generic maintainer-clean-generic clean mostlyclean distclean \
maintainer-clean
maintainer-clean-compile mostlyclean-libtool distclean-libtool \
clean-libtool maintainer-clean-libtool uninstall-binSCRIPTS \
install-binSCRIPTS tags mostlyclean-tags distclean-tags clean-tags \
maintainer-clean-tags distdir info dvi installcheck install-exec \
install-data install uninstall all installdirs mostlyclean-generic \
distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean
wmaker.inst: $(srcdir)/wmaker.inst.in ./Makefile
@@ -402,6 +430,7 @@ wmaker.inst: $(srcdir)/wmaker.inst.in ./Makefile
sed -e "s:#pkgdatadir#:$(pkgdatadir):" \
-e "s/#version#/$(VERSION)/" \
-e "s:#bindir#:$(bindir):" \
-e "s:#LITE#:@LITE@:" \
$(srcdir)/wmaker.inst.in >wmaker.inst
chmod 755 wmaker.inst

View File

@@ -12,7 +12,8 @@ geticonset- outputs the current set of icon assignments. Good for making
setstyle- load style settings from a style file and setup WindowMaker
getstyle - gets current style settings and save into a file
getstyle - gets current style settings and save into a file or create
a theme pack.
seticons- merges icon definitions into WMWindowAttributes file

View File

@@ -25,6 +25,14 @@
#include <stdio.h>
#include <proplist.h>
#include <string.h>
#include <unistd.h>
#include <string.h>
#include <pwd.h>
#include <limits.h>
#ifndef PATH_MAX
#define PATH_MAX 1024
#endif
#include "../src/wconfig.h"
@@ -35,11 +43,9 @@ static char *options[] = {
"MenuTitleFont",
"MenuTextFont",
"IconTitleFont",
"ClipTitleFont",
"DisplayFont",
"HighlightColor",
"HighlightTextColor",
"ClipTitleColor",
"CClipTitleColor",
"FTitleColor",
"PTitleColor",
@@ -53,6 +59,8 @@ static char *options[] = {
"MenuTitleBack",
"MenuTextBack",
"IconBack",
"IconTitleColor",
"IconTitleBack",
NULL
};
@@ -68,6 +76,10 @@ static char *theme_options[] = {
char *ProgName;
char *PixmapPath = NULL;
char *ThemePath = NULL;
void
print_help()
@@ -76,6 +88,7 @@ print_help()
puts("options:");
puts(" -h print help");
puts(" -t get theme options too");
puts(" -p produce a theme pack");
}
@@ -111,12 +124,359 @@ defaultsPathForDomain(char *domain)
}
BOOL
StringCompareHook(proplist_t pl1, proplist_t pl2)
{
char *str1, *str2;
str1 = PLGetString(pl1);
str2 = PLGetString(pl2);
if (strcasecmp(str1, str2)==0)
return YES;
else
return NO;
}
void
abortar(char *reason)
{
char buffer[4000];
printf("%s: %s\n", ProgName, reason);
if (ThemePath) {
printf("Removing unfinished theme pack\n");
sprintf(buffer, "/bin/rm -fr %s", ThemePath);
if (system(buffer)!=0) {
printf("%s: could not execute command %s\n", ProgName, buffer);
}
}
exit(1);
}
char*
wgethomedir()
{
char *home = getenv("HOME");
struct passwd *user;
if (home)
return home;
user = getpwuid(getuid());
if (!user) {
char buffer[80];
sprintf(buffer, "could not get password entry for UID %i", getuid());
perror(buffer);
return "/";
}
if (!user->pw_dir) {
return "/";
} else {
return user->pw_dir;
}
}
void*
wmalloc(int size)
{
void *tmp;
tmp = malloc(size);
if (!tmp) {
abortar("out of memory");
}
return tmp;
}
char*
wstrdup(char *str)
{
char *tmp;
tmp = wmalloc(strlen(str)+1);
strcpy(tmp, str);
return tmp;
}
static char*
getuserhomedir(char *username)
{
struct passwd *user;
user = getpwnam(username);
if (!user) {
char buffer[100];
sprintf(buffer,"could not get password entry for user %s", username);
perror(buffer);
return NULL;
}
if (!user->pw_dir) {
return "/";
} else {
return user->pw_dir;
}
}
char*
wexpandpath(char *path)
{
char buffer2[PATH_MAX+2];
char buffer[PATH_MAX+2];
int i;
memset(buffer, 0, PATH_MAX+2);
if (*path=='~') {
char *home;
path++;
if (*path=='/' || *path==0) {
home = wgethomedir();
strcat(buffer, home);
} else {
int j;
j = 0;
while (*path!=0 && *path!='/') {
buffer2[j++] = *path;
buffer2[j] = 0;
path++;
}
home = getuserhomedir(buffer2);
if (!home)
return NULL;
strcat(buffer, home);
}
}
i = strlen(buffer);
while (*path!=0) {
char *tmp;
if (*path=='$') {
int j = 0;
path++;
/* expand $(HOME) or $HOME style environment variables */
if (*path=='(') {
path++;
while (*path!=0 && *path!=')') {
buffer2[j++] = *(path++);
buffer2[j] = 0;
}
if (*path==')')
path++;
tmp = getenv(buffer2);
if (!tmp) {
buffer[i] = 0;
strcat(buffer, "$(");
strcat(buffer, buffer2);
strcat(buffer, ")");
i += strlen(buffer2)+3;
} else {
strcat(buffer, tmp);
i += strlen(tmp);
}
} else {
while (*path!=0 && *path!='/') {
buffer2[j++] = *(path++);
buffer2[j] = 0;
}
tmp = getenv(buffer2);
if (!tmp) {
strcat(buffer, "$");
strcat(buffer, buffer2);
i += strlen(buffer2)+1;
} else {
strcat(buffer, tmp);
i += strlen(tmp);
}
}
} else {
buffer[i++] = *path;
path++;
}
}
return wstrdup(buffer);
}
char*
wfindfileinarray(proplist_t paths, char *file)
{
int i;
char *path;
int len, flen;
char *fullpath;
if (!file)
return NULL;
if (*file=='/' || *file=='~' || !paths || !PLIsArray(paths)
|| PLGetNumberOfElements(paths)==0) {
if (access(file, R_OK)<0) {
fullpath = wexpandpath(file);
if (!fullpath)
return NULL;
if (access(fullpath, R_OK)<0) {
free(fullpath);
return NULL;
} else {
return fullpath;
}
} else {
return wstrdup(file);
}
}
flen = strlen(file);
for (i=0; i < PLGetNumberOfElements(paths); i++) {
proplist_t tmp;
char *dir;
tmp = PLGetArrayElement(paths, i);
if (!PLIsString(tmp) || !(dir = PLGetString(tmp)))
continue;
len = strlen(dir);
path = wmalloc(len+flen+2);
path = memcpy(path, dir, len);
path[len]=0;
strcat(path, "/");
strcat(path, file);
/* expand tilde */
fullpath = wexpandpath(path);
free(path);
if (fullpath) {
/* check if file is readable */
if (access(fullpath, R_OK)==0) {
return fullpath;
}
free(fullpath);
}
}
return NULL;
}
void
copyFile(char *dir, char *file)
{
char buffer[4000];
sprintf(buffer, "/bin/cp %s %s", file, dir);
if (system(buffer)!=0) {
printf("%s: could not copy file %s\n", ProgName, file);
}
}
void
findCopyFile(char *dir, char *file)
{
char *fullPath;
fullPath = wfindfileinarray(PixmapPath, file);
copyFile(dir, fullPath);
free(fullPath);
}
char*
makeThemePack(proplist_t style, char *themeName)
{
proplist_t keys;
proplist_t key;
proplist_t value;
int i;
char *themeDir;
themeDir = wmalloc(strlen(themeName)+50);
sprintf(themeDir, "%s.themed", themeName);
ThemePath = themeDir;
{
char *tmp;
tmp = wmalloc(strlen(themeDir)+20);
sprintf(tmp, "/bin/mkdir %s", themeDir);
if (system(tmp)!=0) {
printf("%s: could not create directory %s\n", ProgName, themeDir);
exit(1);
}
free(tmp);
}
keys = PLGetAllDictionaryKeys(style);
for (i = 0; i < PLGetNumberOfElements(keys); i++) {
key = PLGetArrayElement(keys, i);
value = PLGetDictionaryEntry(style, key);
if (value && PLIsArray(value) && PLGetNumberOfElements(value) > 2) {
proplist_t type;
char *t;
type = PLGetArrayElement(value, 0);
t = PLGetString(type);
if (t && (strcasecmp(t, "tpixmap")==0
|| strcasecmp(t, "spixmap")==0
|| strcasecmp(t, "cpixmap")==0
|| strcasecmp(t, "tdgradient")==0
|| strcasecmp(t, "tvgradient")==0
|| strcasecmp(t, "thgradient")==0)) {
proplist_t file;
char *p;
char *newPath;
file = PLGetArrayElement(value, 1);
p = strrchr(PLGetString(file), '/');
if (p) {
copyFile(themeDir, PLGetString(file));
newPath = wstrdup(p+1);
PLRemoveArrayElement(value, 1);
PLInsertArrayElement(value, PLMakeString(newPath), 1);
free(newPath);
} else {
findCopyFile(themeDir, PLGetString(file));
}
}
}
}
return themeDir;
}
int
main(int argc, char **argv)
{
proplist_t prop, style, key, val;
char *path;
int i, theme_too=0;
int make_pack = 0;
char *style_file = NULL;
@@ -124,8 +484,11 @@ main(int argc, char **argv)
if (argc>1) {
for (i=1; i<argc; i++) {
if (strcmp(argv[i], "-t")==0) {
theme_too++;;
if (strcmp(argv[i], "-p")==0) {
make_pack = 1;
theme_too = 1;
} else if (strcmp(argv[i], "-t")==0) {
theme_too++;
} else if (argv[i][0] != '-') {
style_file = argv[i];
} else {
@@ -134,6 +497,13 @@ main(int argc, char **argv)
}
}
}
if (make_pack && !style_file) {
printf("%s: you must supply a name for the theme pack\n", ProgName);
exit(1);
}
PLSetStringCmpHook(StringCompareHook);
path = defaultsPathForDomain("WindowMaker");
@@ -155,6 +525,9 @@ main(int argc, char **argv)
PLInsertDictionaryEntry(style, key, val);
}
val = PLGetDictionaryEntry(prop, PLMakeString("PixmapPath"));
PixmapPath = PLGetString(val);
if (theme_too) {
for (i=0; theme_options[i]!=NULL; i++) {
key = PLMakeString(theme_options[i]);
@@ -162,15 +535,28 @@ main(int argc, char **argv)
val = PLGetDictionaryEntry(prop, key);
if (val)
PLInsertDictionaryEntry(style, key, val);
}
}
}
if (style_file) {
val = PLMakeString(style_file);
PLSetFilename(style, val);
if (make_pack) {
char *path;
char *themeDir;
makeThemePack(style, style_file);
path = wmalloc(strlen(ThemePath)+32);
strcpy(path, ThemePath);
strcat(path, "/style");
PLSetFilename(style, PLMakeString(path));
PLSave(style, NO);
} else {
puts(PLGetDescriptionIndent(style, 0));
if (style_file) {
val = PLMakeString(style_file);
PLSetFilename(style, val);
PLSave(style, NO);
} else {
puts(PLGetDescriptionIndent(style, 0));
}
}
exit(0);
}

View File

@@ -24,12 +24,28 @@
#include <stdlib.h>
#include <stdio.h>
#include <proplist.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include "../src/wconfig.h"
char *FontOptions[] = {
"IconTitleFont",
"ClipTitleFont",
"DisplayFont",
"MenuTextFont",
"MenuTitleFont",
NULL
};
char *ProgName;
int ignoreFonts = 0;
char*
defaultsPathForDomain(char *domain)
@@ -64,21 +80,196 @@ defaultsPathForDomain(char *domain)
}
void
hackPaths(proplist_t style, char *prefix)
{
proplist_t keys;
proplist_t key;
proplist_t value;
int i;
keys = PLGetAllDictionaryKeys(style);
for (i = 0; i < PLGetNumberOfElements(keys); i++) {
key = PLGetArrayElement(keys, i);
value = PLGetDictionaryEntry(style, key);
if (value && PLIsArray(value) && PLGetNumberOfElements(value) > 2) {
proplist_t type;
char *t;
type = PLGetArrayElement(value, 0);
t = PLGetString(type);
if (t && (strcasecmp(t, "tpixmap")==0
|| strcasecmp(t, "spixmap")==0
|| strcasecmp(t, "cpixmap")==0
|| strcasecmp(t, "tvgradient")==0
|| strcasecmp(t, "thgradient")==0
|| strcasecmp(t, "tdgradient")==0)) {
proplist_t file;
char buffer[4018];
file = PLGetArrayElement(value, 1);
sprintf(buffer, "%s/%s", prefix, PLGetString(file));
PLRemoveArrayElement(value, 1);
PLInsertArrayElement(value, PLMakeString(buffer), 1);
}
}
}
}
/*
* since some of the options introduce incompatibilities, we will need
* to do a kluge here or the themes ppl will get real annoying.
* So, treat for the absence of the following options:
* IconTitleColor
* IconTitleBack
*/
void
hackStyle(proplist_t style)
{
proplist_t keys;
proplist_t tmp;
int i;
int foundIconTitle = 0;
keys = PLGetAllDictionaryKeys(style);
for (i = 0; i < PLGetNumberOfElements(keys); i++) {
char *str;
tmp = PLGetArrayElement(keys, i);
str = PLGetString(tmp);
if (str) {
int j, found;
for (j = 0, found = 0; FontOptions[j]!=NULL; j++) {
if (strcasecmp(str, FontOptions[j])==0) {
PLRemoveDictionaryEntry(style, tmp);
found = 1;
break;
}
}
if (found)
continue;
if (strcasecmp(str, "IconTitleColor")==0
|| strcasecmp(str, "IconTitleBack")==0) {
foundIconTitle = 1;
}
}
}
if (!foundIconTitle) {
/* set the default values */
tmp = PLGetDictionaryEntry(style, PLMakeString("FTitleColor"));
if (tmp) {
PLInsertDictionaryEntry(style, PLMakeString("IconTitleColor"),
tmp);
}
tmp = PLGetDictionaryEntry(style, PLMakeString("FTitleBack"));
if (tmp) {
proplist_t type;
proplist_t value;
char *str;
type = PLGetArrayElement(tmp, 0);
if (!type)
return;
value = NULL;
str = PLGetString(type);
if (strcasecmp(str, "solid")==0) {
value = PLGetArrayElement(tmp, 1);
} else if (strcasecmp(str, "dgradient")==0
|| strcasecmp(str, "hgradient")==0
|| strcasecmp(str, "vgradient")==0) {
proplist_t c1, c2;
int r1, g1, b1, r2, g2, b2;
char buffer[32];
c1 = PLGetArrayElement(tmp, 1);
c2 = PLGetArrayElement(tmp, 2);
if (sscanf(PLGetString(c1), "#%2x%2x%2x", &r1, &g1, &b1)==3
&& sscanf(PLGetString(c2), "#%2x%2x%2x", &r2, &g2, &b2)==3) {
sprintf(buffer, "#%2x%2x%2x", (r1+r2)/2, (g1+g2)/2,
(b1+b2)/2);
value = PLMakeString(buffer);
} else {
value = c1;
}
} else if (strcasecmp(str, "mdgradient")==0
|| strcasecmp(str, "mhgradient")==0
|| strcasecmp(str, "mvgradient")==0) {
value = PLGetArrayElement(tmp, 1);
} else if (strcasecmp(str, "tpixmap")==0
|| strcasecmp(str, "cpixmap")==0
|| strcasecmp(str, "spixmap")==0) {
value = PLGetArrayElement(tmp, 2);
}
if (value) {
PLInsertDictionaryEntry(style, PLMakeString("IconTitleBack"),
value);
}
}
}
}
BOOL
StringCompareHook(proplist_t pl1, proplist_t pl2)
{
char *str1, *str2;
str1 = PLGetString(pl1);
str2 = PLGetString(pl2);
if (strcasecmp(str1, str2)==0)
return YES;
else
return NO;
}
int
main(int argc, char **argv)
{
proplist_t prop, style;
char *path;
struct stat statbuf;
ProgName = argv[0];
if (argc!=2) {
printf("Syntax:\n%s <style file>\n", argv[0]);
if (argc<2) {
printf("Syntax:\n%s [-nofonts] <style file>\n", argv[0]);
exit(1);
}
if (argc == 3) {
if (strcmp(argv[1], "-nofonts")==0) {
ignoreFonts = 1;
} else {
printf("Syntax:\n%s <style file> [-nofonts]\n", argv[0]);
exit(1);
}
}
PLSetStringCmpHook(StringCompareHook);
path = defaultsPathForDomain("WindowMaker");
prop = PLGetProplistWithPath(path);
if (!prop) {
printf("%s:could not load WindowMaker configuration file \"%s\".\n",
@@ -86,12 +277,61 @@ main(int argc, char **argv)
exit(1);
}
style = PLGetProplistWithPath(argv[1]);
if (!style) {
printf("%s:could not load style file \"%s\".\n", ProgName, argv[1]);
if (stat(argv[argc-1], &statbuf) < 0) {
perror(argv[argc-1]);
exit(1);
}
if (S_ISDIR(statbuf.st_mode)) {
char buffer[4018];
char *prefix;
if (*argv[argc-1] != '/') {
if (!getcwd(buffer, 4000)) {
printf("%s: complete path for %s is too long\n", ProgName,
argv[argc-1]);
exit(1);
}
if (strlen(buffer) + strlen(argv[argc-1]) > 4000) {
printf("%s: complete path for %s is too long\n", ProgName,
argv[argc-1]);
exit(1);
}
strcat(buffer, "/");
} else {
buffer[0] = 0;
}
strcat(buffer, argv[argc-1]);
prefix = malloc(strlen(buffer)+10);
if (!prefix) {
printf("%s: out of memory\n", ProgName);
exit(1);
}
strcpy(prefix, buffer);
strcat(buffer, "/style");
style = PLGetProplistWithPath(buffer);
if (!style) {
printf("%s:could not load style file \"%s\".\n", ProgName,
buffer);
exit(1);
}
hackPaths(style, prefix);
free(prefix);
} else {
style = PLGetProplistWithPath(argv[argc-1]);
if (!style) {
printf("%s:could not load style file \"%s\".\n", ProgName,
argv[argc-1]);
exit(1);
}
}
hackStyle(style);
PLMergeDictionaries(prop, style);
PLSave(prop, YES);

View File

@@ -145,19 +145,16 @@ fi
if [ ! -d "$GSDIR/Library/WindowMaker/Styles" ]; then
echo "Creating style library $GSDIR/Library/WindowMaker/Styles"
make_dir $GSDIR/Library/WindowMaker/Styles
else
echo "Styles directory already exists. Skipping..."
fi
if [ ! -d "$GSDIR/Library/WindowMaker/Themes" ]; then
echo "Creating theme library $GSDIR/Library/WindowMaker/Themes"
make_dir $GSDIR/Library/WindowMaker/Themes
else
echo "Themes directory already exists. Skipping..."
fi
if [ ! -d "$GSDIR/Library/WindowMaker/Backgrounds" ]; then
echo "Creating bg image library $GSDIR/Library/WindowMaker/Backgrounds"
make_dir $GSDIR/Library/WindowMaker/Backgrounds
@@ -198,9 +195,7 @@ else
fi
echo "Copying default menu configuration files..."
FILES=`(cd $GLOBALDIR;ls -1 menu* plmenu wmmacros)`
all=""
if test -z #LITE# ; then
for i in $FILES; do
if [ -f "$GSDIR/Library/WindowMaker/$i" ]; then
echo "The file \"$i\" already exists in $GSDIR/Library/WindowMaker"
@@ -218,7 +213,7 @@ for i in $FILES; do
copy $GLOBALDIR/$i $GSDIR/Library/WindowMaker/$i
fi
done
fi
cp $GLOBALDIR/README $GSDIR/Library/WindowMaker
cp -i $GLOBALDIR/autostart.sh $GSDIR/Library/WindowMaker/autostart
@@ -234,14 +229,22 @@ show_end_message() {
echo
echo "Installation Finished"
echo
echo "There are menus in 2 different file formats. The plain text format and"
echo "the property list format. The plain text format is more flexible, but"
echo "the menu in the property list format can be edited graphically. The"
echo "menu that will be used by default is the plain text. Read"
echo "$GSDIR/Library/WindowMaker/README for information on how to change it."
if test -z #LITE# ; then
echo "There are menus in 2 different file formats. The plain text format and"
echo "the property list format. The plain text format is more flexible, but"
echo "the menu in the property list format can be edited graphically. The"
echo "menu that will be used by default is the plain text. Read"
echo "$GSDIR/Library/WindowMaker/README for information on how to change it."
else
echo "Your copy of Window Maker is configured especially for KDE."
echo "Window Maker application menus are not available."
fi
}
if test -z `grep wmaker ~/.xinitrc`; then
show_end_message
exit 0
fi
trap "show_end_message;exit" 2

File diff suppressed because it is too large Load Diff

View File

@@ -15,18 +15,20 @@
# Nikolaos Papagrigoriou <papanikos@usa.net>
# Quote bug fix info from:
# Luke Kendall <luke@research.canon.com.au>
# Bug fix info for Korean font section from:
# CHOI Junho <junker@jazz.snu.ac.kr>
VERSION="Version 0.4 1998/11/10"
VERSION="Version 0.5 1998/12/07"
WDWRITE="wdwrite"
PROGRAM=`basename $0`
if test $# != 1; then
echo
echo "$0 - font/language setting utility for Window Maker"
echo "$PROGRAM - font/language setting utility for Window Maker"
echo
echo "Usage: $VERSION"
echo " $0 <option> "
echo " $PROGRAM <option> "
cat <<EOF
-----------------------------------------------------------------------
[Option] [Fontset] [Font Information]
@@ -34,11 +36,11 @@ if test $# != 1; then
latin1 helvetica(iso8859-1)
latin2 helvetica(iso8859-2) See *Note1.
greek helvetica(iso8859-7) See *Note1.
japanese helvetica/-*-fixed(jisx02XX) Included in X11R6/XFree("fnon" pkg)
japanese helvetica/-*-fixed(jisx02XX) Included in X11R6/XFree86("fnon" pkg)
korean helvetica/-*-kodig(ksc5601) See *Note1.
korean2 helvetica/daewoo(ksc5601) Included in X11R6/XFree("fnon" pkg)
russian helvetica(koi8-r) Included in X11R6/XFree("fcyr" pkg)
turkish unknown See *Note2
korean2 helvetica/daewoo(ksc5601) Included in X11R6/XFree86("fnon" pkg)
russian helvetica(koi8-r) Included in X11R6/XFree86("fcyr" pkg)
turkish unknown See *Note2.
-----------------------------------------------------------------------
Latin1 Languages: Danish/Dutch/English/Finnish/French/Galician/German/
Italian/Norwegian/Portuguese/Spanish/Swedish/...
@@ -118,14 +120,14 @@ case $1 in
DisplayFont=\"-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*,-*-*-medium-r-normal-*-14-*,-*-*-medium-r-normal-*-*-*\"
;;
korean)
SystemFont=\"-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,*-kodig-medium-r-normal--*-%d-*-*-*-*-*-*,*-*-medium-r-normal--*-%d-*-*-*-*-*-*,*-*-*-*-*--%d-*-*-*-*-*-*-*,*\"
BoldSystemFont=\"-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-kodig-bold-r-normal--*-%d-*-*-*-*-*-*,*-*-bold-r-normal--*-%d-*-*-*-*-*-*,*-*-*-*-*--%d-*-*-*-*-*-*-*,*\"
WindowTitleFont=\"7x14,-*-kodig-medium-r-normal--14-*-*-*-*-*-*-*,-*-*-medium-r-normal--14-*-*-*-*-*-*-*,-*-*-medium-r-normal--*-*-*-*-*-*-*-*,-*-*-*-r-normal--*-*-*-*-*-*-*-*,-*-*-*-*-*--*-*-*-*-*-*-*-*,*\"
MenuTitleFont=\"7x14,-*-kodig-medium-r-normal--14-*-*-*-*-*-*-*,-*-*-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
MenuTextFont=\"7x14,-*-kodig-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
IconTitleFont=\"7x14,-*-kodig-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
ClipTitleFont=\"7x14,-*-kodig-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
DisplayFont=\"7x14,-*-kodig-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
SystemFont=\"-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-kodig-medium-r-normal--%d-*-*-*-*-*-*-*,*-*-medium-r-normal-*-%d-*-*-*-*-*-*-*,*-*-*-*-*--%d-*-*-*-*-*-*-*,*\"
BoldSystemFont=\"-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-kodig-bold-r-normal--%d-*-*-*-*-*-*-*,-*-kodig-medium-r-normal--%d-*-*-*-*-*-*-*,*-*-bold-r-normal-*-%d-*-*-*-*-*-*-*,*-*-*-*-*--%d-*-*-*-*-*-*-*,*\"
WindowTitleFont=\"-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*,-*-kodig-medium-r-normal--12-*-*-*-*-*-*-*,-*-*-medium-r-normal--12-*-*-*-*-*-*-*,-*-*-medium-r-normal--*-*-*-*-*-*-*-*,-*-*-*-r-normal--*-*-*-*-*-*-*-*,-*-*-*-*-*--*-*-*-*-*-*-*-*,*\"
MenuTitleFont=\"-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*,-*-kodig-medium-r-normal--14-*-*-*-*-*-*-*,-*-*-medium-r-normal--12-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
MenuTextFont=\"-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*,-*-kodig-medium-r-normal--14-*-*-*-*-*-*-*,*-*-medium-r-normal--12-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
IconTitleFont=\"-*-helvetica-medium-r-normal-*-8-*-*-*-*-*-*-*,-*-kodig-medium-r-normal--10-*-*-*-*-*-*-*,*-*-medium-r-normal--10-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
ClipTitleFont=\"-*-helvetica-bold-r-normal-*-10-*-*-*-*-*-*-*,-*-kodig-medium-r-normal--10-*-*-*-*-*-*-*,*-*-medium-r-normal--10-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
DisplayFont=\"-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*,-*-kodig-medium-r-normal--12-*-*-*-*-*-*-*,*-*-medium-r-normal--12-*-*-*-*-*-*-*,*-*-medium-r-normal--*-*-*-*-*-*-*-*,*-*-*-r-normal--*-*-*-*-*-*-*-*,*\"
;;
korean2)
SystemFont=\"-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-medium-r-normal-*-%d-*,-*-medium-r-normal-*\"