mirror of
https://github.com/gryf/wmaker.git
synced 2026-01-08 23:04:15 +01:00
Initial revision
This commit is contained in:
458
WPrefs.app/Configurations.c
Normal file
458
WPrefs.app/Configurations.c
Normal file
@@ -0,0 +1,458 @@
|
||||
/* Configurations.c- misc. configurations
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMFrame *icoF;
|
||||
WMButton *icoB[5];
|
||||
|
||||
WMFrame *shaF;
|
||||
WMButton *shaB[5];
|
||||
|
||||
WMFrame *titlF;
|
||||
WMButton *oldsB;
|
||||
WMButton *newsB;
|
||||
|
||||
WMFrame *animF;
|
||||
WMButton *animB;
|
||||
WMButton *supB;
|
||||
WMButton *sfxB;
|
||||
WMLabel *noteL;
|
||||
|
||||
WMFrame *dithF;
|
||||
WMButton *dithB;
|
||||
WMSlider *dithS;
|
||||
WMLabel *dithL;
|
||||
WMLabel *dith1L;
|
||||
WMLabel *dith2L;
|
||||
|
||||
int cmapSize;
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "configs"
|
||||
|
||||
#define OLDS_IMAGE "oldstyle"
|
||||
#define NEWS_IMAGE "newstyle"
|
||||
|
||||
#define ANIM_IMAGE "animations"
|
||||
#define SUPERF_IMAGE "moreanim"
|
||||
#define SOUND_IMAGE "sound"
|
||||
|
||||
#define SPEED_IMAGE "speed%i"
|
||||
#define SPEED_IMAGE_S "speed%is"
|
||||
|
||||
#define ARQUIVO_XIS "xis"
|
||||
|
||||
|
||||
static void updateLabel(WMWidget *self, void *data);
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
WMPerformButtonClick(panel->icoB[GetSpeedForKey("IconSlideSpeed")]);
|
||||
|
||||
WMPerformButtonClick(panel->shaB[GetSpeedForKey("ShadeSpeed")]);
|
||||
|
||||
if (GetBoolForKey("NewStyle")) {
|
||||
WMPerformButtonClick(panel->newsB);
|
||||
} else {
|
||||
WMPerformButtonClick(panel->oldsB);
|
||||
}
|
||||
|
||||
WMSetButtonSelected(panel->animB, !GetBoolForKey("DisableAnimations"));
|
||||
|
||||
WMSetButtonSelected(panel->supB, GetBoolForKey("Superfluous"));
|
||||
|
||||
WMSetButtonSelected(panel->sfxB, !GetBoolForKey("DisableSound"));
|
||||
|
||||
WMSetButtonSelected(panel->dithB, GetBoolForKey("DisableDithering"));
|
||||
|
||||
WMSetSliderValue(panel->dithS, GetIntegerForKey("ColormapSize"));
|
||||
|
||||
updateLabel(panel->dithS, panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
updateLabel(WMWidget *self, void *data)
|
||||
{
|
||||
WMSlider *sPtr = (WMSlider*)self;
|
||||
_Panel *panel = (_Panel*)data;
|
||||
char buffer[64];
|
||||
float fl;
|
||||
|
||||
fl = WMGetSliderValue(sPtr);
|
||||
|
||||
panel->cmapSize = (int)fl;
|
||||
|
||||
sprintf(buffer, "%i", panel->cmapSize*panel->cmapSize*panel->cmapSize);
|
||||
WMSetLabelText(panel->dithL, buffer);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createImages(WMScreen *scr, RContext *rc, RImage *xis, char *file,
|
||||
WMPixmap **icon1, WMPixmap **icon2)
|
||||
{
|
||||
RImage *icon;
|
||||
char *path;
|
||||
|
||||
*icon1 = NULL;
|
||||
*icon2 = NULL;
|
||||
|
||||
path = LocateImage(file);
|
||||
if (!path) {
|
||||
return;
|
||||
}
|
||||
|
||||
*icon1 = WMCreatePixmapFromFile(scr, path);
|
||||
if (!*icon1) {
|
||||
wwarning(_("could not load icon %s"), path);
|
||||
free(path);
|
||||
return;
|
||||
}
|
||||
icon = RLoadImage(rc, path, 0);
|
||||
if (!icon) {
|
||||
wwarning(_("could not load icon %s"), path);
|
||||
free(path);
|
||||
return;
|
||||
}
|
||||
if (xis) {
|
||||
RCombineImages(icon, xis);
|
||||
if (!(*icon2 = WMCreatePixmapFromRImage(scr, icon, 127)))
|
||||
wwarning(_("could not process icon %s:"), file, RErrorString);
|
||||
}
|
||||
RDestroyImage(icon);
|
||||
free(path);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
char *buf1, *buf2;
|
||||
WMPixmap *icon, *altIcon;
|
||||
RImage *xis = NULL;
|
||||
int i;
|
||||
RContext *rc = WMScreenRContext(scr);
|
||||
WMFont *font = WMSystemFontOfSize(scr, 10);
|
||||
char *path;
|
||||
|
||||
path = LocateImage(ARQUIVO_XIS);
|
||||
if (path) {
|
||||
xis = RLoadImage(rc, path, 0);
|
||||
if (!xis) {
|
||||
wwarning(_("could not load image file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
/*********** Icon Slide Speed **********/
|
||||
|
||||
panel->icoF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->icoF, 230, 55);
|
||||
WMMoveWidget(panel->icoF, 15, 10);
|
||||
WMSetFrameTitle(panel->icoF, _("Icon Slide Speed"));
|
||||
|
||||
/*********** Shade Animation Speed **********/
|
||||
panel->shaF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->shaF, 230, 55);
|
||||
WMMoveWidget(panel->shaF, 15, 70);
|
||||
WMSetFrameTitle(panel->shaF, _("Shade Animation Speed"));
|
||||
|
||||
|
||||
buf1 = wmalloc(strlen(SPEED_IMAGE)+1);
|
||||
buf2 = wmalloc(strlen(SPEED_IMAGE_S)+1);
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
panel->icoB[i] = WMCreateCustomButton(panel->icoF, WBBStateChangeMask);
|
||||
panel->shaB[i] = WMCreateCustomButton(panel->shaF, WBBStateChangeMask);
|
||||
WMResizeWidget(panel->icoB[i], 40, 35);
|
||||
WMMoveWidget(panel->icoB[i], 10+(40*i), 15);
|
||||
WMResizeWidget(panel->shaB[i], 40, 35);
|
||||
WMMoveWidget(panel->shaB[i], 10+(40*i), 15);
|
||||
WMSetButtonBordered(panel->icoB[i], False);
|
||||
WMSetButtonImagePosition(panel->icoB[i], WIPImageOnly);
|
||||
if (i > 0) {
|
||||
WMGroupButtons(panel->icoB[0], panel->icoB[i]);
|
||||
}
|
||||
WMSetButtonBordered(panel->shaB[i], False);
|
||||
WMSetButtonImagePosition(panel->shaB[i], WIPImageOnly);
|
||||
if (i > 0) {
|
||||
WMGroupButtons(panel->shaB[0], panel->shaB[i]);
|
||||
}
|
||||
sprintf(buf1, SPEED_IMAGE, i);
|
||||
sprintf(buf2, SPEED_IMAGE_S, i);
|
||||
path = LocateImage(buf1);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->icoB[i], icon);
|
||||
WMSetButtonImage(panel->shaB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
path = LocateImage(buf2);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonAltImage(panel->icoB[i], icon);
|
||||
WMSetButtonAltImage(panel->shaB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
}
|
||||
free(buf1);
|
||||
free(buf2);
|
||||
|
||||
|
||||
WMMapSubwidgets(panel->icoF);
|
||||
WMMapSubwidgets(panel->shaF);
|
||||
|
||||
/***************** Titlebar Style Size ****************/
|
||||
panel->titlF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->titlF, 230, 95);
|
||||
WMMoveWidget(panel->titlF, 15, 130);
|
||||
WMSetFrameTitle(panel->titlF, _("Titlebar Style"));
|
||||
|
||||
panel->newsB = WMCreateButton(panel->titlF, WBTOnOff);
|
||||
WMResizeWidget(panel->newsB, 90, 60);
|
||||
WMMoveWidget(panel->newsB, 25, 20);
|
||||
WMSetButtonImagePosition(panel->newsB, WIPImageOnly);
|
||||
path = LocateImage(NEWS_IMAGE);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->newsB, icon);
|
||||
WMReleasePixmap(icon);
|
||||
}
|
||||
}
|
||||
|
||||
panel->oldsB = WMCreateButton(panel->titlF, WBTOnOff);
|
||||
WMResizeWidget(panel->oldsB, 90, 60);
|
||||
WMMoveWidget(panel->oldsB, 115, 20);
|
||||
WMSetButtonImagePosition(panel->oldsB, WIPImageOnly);
|
||||
path = LocateImage(OLDS_IMAGE);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->oldsB, icon);
|
||||
WMReleasePixmap(icon);
|
||||
}
|
||||
}
|
||||
|
||||
WMGroupButtons(panel->newsB, panel->oldsB);
|
||||
|
||||
WMMapSubwidgets(panel->titlF);
|
||||
|
||||
/**************** Features ******************/
|
||||
|
||||
panel->animF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->animF, 255, 115);
|
||||
WMMoveWidget(panel->animF, 255, 10);
|
||||
WMSetFrameTitle(panel->animF, _("Animations and Sound"));
|
||||
|
||||
panel->animB = WMCreateButton(panel->animF, WBTToggle);
|
||||
WMResizeWidget(panel->animB, 64, 64);
|
||||
WMMoveWidget(panel->animB, 15, 20);
|
||||
WMSetButtonFont(panel->animB, font);
|
||||
WMSetButtonText(panel->animB, _("Animations"));
|
||||
WMSetButtonImagePosition(panel->animB, WIPAbove);
|
||||
createImages(scr, rc, xis, ANIM_IMAGE, &altIcon, &icon);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->animB, icon);
|
||||
WMReleasePixmap(icon);
|
||||
}
|
||||
if (altIcon) {
|
||||
WMSetButtonAltImage(panel->animB, altIcon);
|
||||
WMReleasePixmap(altIcon);
|
||||
}
|
||||
|
||||
panel->supB = WMCreateButton(panel->animF, WBTToggle);
|
||||
WMResizeWidget(panel->supB, 64, 64);
|
||||
WMMoveWidget(panel->supB, 95, 20);
|
||||
WMSetButtonFont(panel->supB, font);
|
||||
WMSetButtonText(panel->supB, _("Superfluous"));
|
||||
WMSetButtonImagePosition(panel->supB, WIPAbove);
|
||||
createImages(scr, rc, xis, SUPERF_IMAGE, &altIcon, &icon);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->supB, icon);
|
||||
WMReleasePixmap(icon);
|
||||
}
|
||||
if (altIcon) {
|
||||
WMSetButtonAltImage(panel->supB, altIcon);
|
||||
WMReleasePixmap(altIcon);
|
||||
}
|
||||
|
||||
panel->sfxB = WMCreateButton(panel->animF, WBTToggle);
|
||||
WMResizeWidget(panel->sfxB, 64, 64);
|
||||
WMMoveWidget(panel->sfxB, 175, 20);
|
||||
WMSetButtonFont(panel->sfxB, font);
|
||||
WMSetButtonText(panel->sfxB, _("Sounds"));
|
||||
WMSetButtonImagePosition(panel->sfxB, WIPAbove);
|
||||
createImages(scr, rc, xis, SOUND_IMAGE, &altIcon, &icon);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->sfxB, icon);
|
||||
WMReleasePixmap(icon);
|
||||
}
|
||||
if (altIcon) {
|
||||
WMSetButtonAltImage(panel->sfxB, altIcon);
|
||||
WMReleasePixmap(altIcon);
|
||||
}
|
||||
|
||||
|
||||
panel->noteL = WMCreateLabel(panel->animF);
|
||||
WMResizeWidget(panel->noteL, 235, 28);
|
||||
WMMoveWidget(panel->noteL, 10, 85);
|
||||
WMSetLabelFont(panel->noteL, font);
|
||||
WMSetLabelText(panel->noteL, _("Note: sound requires a module distributed separately"));
|
||||
|
||||
WMMapSubwidgets(panel->animF);
|
||||
|
||||
/*********** Dithering **********/
|
||||
panel->cmapSize = 4;
|
||||
|
||||
panel->dithF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->dithF, 255, 95);
|
||||
WMMoveWidget(panel->dithF, 255, 130);
|
||||
WMSetFrameTitle(panel->dithF, _("Dithering colormap for 8bpp"));
|
||||
|
||||
panel->dithB = WMCreateSwitchButton(panel->dithF);
|
||||
WMResizeWidget(panel->dithB, 235, 32);
|
||||
WMMoveWidget(panel->dithB, 15, 15);
|
||||
WMSetButtonText(panel->dithB, _("Disable dithering in any visual/depth"));
|
||||
|
||||
panel->dithL = WMCreateLabel(panel->dithF);
|
||||
WMResizeWidget(panel->dithL, 75, 16);
|
||||
WMMoveWidget(panel->dithL, 90, 50);
|
||||
WMSetLabelTextAlignment(panel->dithL, WACenter);
|
||||
WMSetLabelText(panel->dithL, "64");
|
||||
|
||||
panel->dithS = WMCreateSlider(panel->dithF);
|
||||
WMResizeWidget(panel->dithS, 95, 16);
|
||||
WMMoveWidget(panel->dithS, 80, 65);
|
||||
WMSetSliderMinValue(panel->dithS, 2);
|
||||
WMSetSliderMaxValue(panel->dithS, 6);
|
||||
WMSetSliderContinuous(panel->dithS, True);
|
||||
WMSetSliderAction(panel->dithS, updateLabel, panel);
|
||||
|
||||
panel->dith1L = WMCreateLabel(panel->dithF);
|
||||
WMResizeWidget(panel->dith1L, 70, 35);
|
||||
WMMoveWidget(panel->dith1L, 5, 50);
|
||||
WMSetLabelTextAlignment(panel->dith1L, WACenter);
|
||||
WMSetLabelFont(panel->dith1L, font);
|
||||
WMSetLabelText(panel->dith1L, _("More colors for applications"));
|
||||
|
||||
panel->dith2L = WMCreateLabel(panel->dithF);
|
||||
WMResizeWidget(panel->dith2L, 70, 35);
|
||||
WMMoveWidget(panel->dith2L, 180, 50);
|
||||
WMSetLabelTextAlignment(panel->dith2L, WACenter);
|
||||
WMSetLabelFont(panel->dith2L, font);
|
||||
WMSetLabelText(panel->dith2L, _("More colors for WindowMaker"));
|
||||
|
||||
WMMapSubwidgets(panel->dithF);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
if (xis)
|
||||
RDestroyImage(xis);
|
||||
WMReleaseFont(font);
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<5; i++) {
|
||||
if (WMGetButtonSelected(panel->icoB[i]))
|
||||
break;
|
||||
}
|
||||
SetSpeedForKey(i, "IconSlideSpeed");
|
||||
|
||||
|
||||
for (i=0; i<5; i++) {
|
||||
if (WMGetButtonSelected(panel->shaB[i]))
|
||||
break;
|
||||
}
|
||||
SetSpeedForKey(i, "ShadeSpeed");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->newsB), "NewStyle");
|
||||
|
||||
SetBoolForKey(!WMGetButtonSelected(panel->animB), "DisableAnimations");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->supB), "Superfluous");
|
||||
SetBoolForKey(!WMGetButtonSelected(panel->sfxB), "DisableSound");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->dithB), "DisableDithering");
|
||||
SetIntegerForKey(WMGetSliderValue(panel->dithS), "ColormapSize");
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitConfigurations(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Other Configurations");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
113
WPrefs.app/Expert.c
Normal file
113
WPrefs.app/Expert.c
Normal file
@@ -0,0 +1,113 @@
|
||||
/* Expert.c- expert user options
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMButton *swi[4];
|
||||
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "expert"
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
WMUserDefaults *udb = WMGetStandardUserDefaults();
|
||||
|
||||
WMSetButtonSelected(panel->swi[0], WMGetUDBoolForKey(udb, "NoXSetStuff"));
|
||||
WMSetButtonSelected(panel->swi[1], GetBoolForKey("SaveSessionOnExit"));
|
||||
WMSetButtonSelected(panel->swi[2], GetBoolForKey("UseSaveUnders"));
|
||||
WMSetButtonSelected(panel->swi[3], GetBoolForKey("DisableBlinking"));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
int i;
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
for (i=0; i<4; i++) {
|
||||
panel->swi[i] = WMCreateSwitchButton(panel->frame);
|
||||
WMResizeWidget(panel->swi[i], FRAME_WIDTH-40, 25);
|
||||
WMMoveWidget(panel->swi[i], 20, 20+i*25);
|
||||
}
|
||||
WMSetButtonText(panel->swi[0], _("Do not set non-WindowMaker specific parameters (do not use xset)"));
|
||||
WMSetButtonText(panel->swi[1], _("Automatically save session when exiting WindowMaker"));
|
||||
WMSetButtonText(panel->swi[2], _("Use SaveUnder in window frames, icons, menus and other objects"));
|
||||
WMSetButtonText(panel->swi[3], _("Disable cycling color highlighting of icons."));
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeDefaults(_Panel *panel)
|
||||
{
|
||||
WMUserDefaults *udb = WMGetStandardUserDefaults();
|
||||
|
||||
WMSetUDBoolForKey(udb, WMGetButtonSelected(panel->swi[0]), "NoXSetStuff");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->swi[1]), "SaveSessionOnExit");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->swi[2]), "UseSaveUnders");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->swi[3]), "DisableBlinking");
|
||||
}
|
||||
|
||||
|
||||
Panel*
|
||||
InitExpert(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Expert User Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeDefaults;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
395
WPrefs.app/Focus.c
Normal file
395
WPrefs.app/Focus.c
Normal file
@@ -0,0 +1,395 @@
|
||||
/* Focus.c- input and colormap focus stuff
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMFrame *kfocF;
|
||||
WMPopUpButton *kfocP;
|
||||
WMLabel *kfocL;
|
||||
|
||||
WMFrame *cfocF;
|
||||
WMButton *autB;
|
||||
WMButton *manB;
|
||||
|
||||
WMFrame *raisF;
|
||||
WMButton *raisB[5];
|
||||
WMTextField *raisT;
|
||||
WMLabel *raisL;
|
||||
|
||||
WMFrame *optF;
|
||||
WMButton *ignB;
|
||||
WMButton *newB;
|
||||
|
||||
char raiseDelaySelected;
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "windowfocus"
|
||||
|
||||
#define DELAY_ICON "timer%i"
|
||||
#define DELAY_ICON_S "timer%is"
|
||||
|
||||
static void changeFocusMode(WMWidget *w, void *data);
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
char *str;
|
||||
int i;
|
||||
char buffer[32];
|
||||
|
||||
str = GetStringForKey("FocusMode");
|
||||
if (strcasecmp(str, "manual")==0 || strcasecmp(str, "clicktofocus")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->kfocP, 0);
|
||||
else if (strcasecmp(str, "auto")==0 || strcasecmp(str, "focusfollowsmouse")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->kfocP, 1);
|
||||
else if (strcasecmp(str, "semiauto")==0 || strcasecmp(str, "sloppy")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->kfocP, 2);
|
||||
else {
|
||||
wwarning(_("bad option value %s for option FocusMode. Using default Manual"),
|
||||
str);
|
||||
WMSetPopUpButtonSelectedItem(panel->kfocP, 0);
|
||||
}
|
||||
changeFocusMode(panel->kfocP, panel);
|
||||
|
||||
/**/
|
||||
str = GetStringForKey("ColormapMode");
|
||||
if (strcasecmp(str, "manual")==0 || strcasecmp(str, "clicktofocus")==0) {
|
||||
WMPerformButtonClick(panel->manB);
|
||||
} else if (strcasecmp(str, "auto")==0 || strcasecmp(str, "focusfollowsmouse")==0) {
|
||||
WMPerformButtonClick(panel->autB);
|
||||
} else {
|
||||
wwarning(_("bad option value %s for option ColormapMode. Using default Manual"),
|
||||
str);
|
||||
WMPerformButtonClick(panel->manB);
|
||||
}
|
||||
|
||||
/**/
|
||||
i = GetIntegerForKey("RaiseDelay");
|
||||
sprintf(buffer, "%i", i);
|
||||
WMSetTextFieldText(panel->raisT, buffer);
|
||||
|
||||
switch (i) {
|
||||
case 0:
|
||||
WMPerformButtonClick(panel->raisB[0]);
|
||||
break;
|
||||
case 10:
|
||||
WMPerformButtonClick(panel->raisB[1]);
|
||||
break;
|
||||
case 100:
|
||||
WMPerformButtonClick(panel->raisB[2]);
|
||||
break;
|
||||
case 350:
|
||||
WMPerformButtonClick(panel->raisB[3]);
|
||||
break;
|
||||
case 800:
|
||||
WMPerformButtonClick(panel->raisB[4]);
|
||||
break;
|
||||
}
|
||||
|
||||
/**/
|
||||
WMSetButtonSelected(panel->ignB, GetBoolForKey("IgnoreFocusClick"));
|
||||
|
||||
WMSetButtonSelected(panel->newB, GetBoolForKey("AutoFocus"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
char *str;
|
||||
int i;
|
||||
|
||||
switch (WMGetPopUpButtonSelectedItem(panel->kfocP)) {
|
||||
case 1:
|
||||
str = "auto";
|
||||
break;
|
||||
case 2:
|
||||
str = "sloppy";
|
||||
break;
|
||||
default:
|
||||
str = "manual";
|
||||
break;
|
||||
}
|
||||
SetStringForKey(str, "FocusMode");
|
||||
|
||||
if (WMGetButtonSelected(panel->manB)) {
|
||||
SetStringForKey("manual", "ColormapMode");
|
||||
} else {
|
||||
SetStringForKey("auto", "ColormapMode");
|
||||
}
|
||||
|
||||
str = WMGetTextFieldText(panel->raisT);
|
||||
if (sscanf(str, "%i", &i)!=1)
|
||||
i = 0;
|
||||
SetIntegerForKey(i, "RaiseDelay");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->ignB), "IgnoreFocusClick");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->newB), "AutoFocus");
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
pushDelayButton(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
|
||||
panel->raiseDelaySelected = 1;
|
||||
if (w == panel->raisB[0]) {
|
||||
WMSetTextFieldText(panel->raisT, "OFF");
|
||||
} else if (w == panel->raisB[1]) {
|
||||
WMSetTextFieldText(panel->raisT, "10");
|
||||
} else if (w == panel->raisB[2]) {
|
||||
WMSetTextFieldText(panel->raisT, "100");
|
||||
} else if (w == panel->raisB[3]) {
|
||||
WMSetTextFieldText(panel->raisT, "350");
|
||||
} else if (w == panel->raisB[4]) {
|
||||
WMSetTextFieldText(panel->raisT, "800");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
changeFocusMode(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
|
||||
switch (WMGetPopUpButtonSelectedItem(w)) {
|
||||
case 0:
|
||||
WMSetLabelText(panel->kfocL, _("Click on the window to set\n"\
|
||||
"keyboard input focus."));
|
||||
break;
|
||||
case 1:
|
||||
WMSetLabelText(panel->kfocL, _("Set keyboard input focus to\n"\
|
||||
"the window under the mouse pointer,\n"\
|
||||
"including the root window."));
|
||||
break;
|
||||
case 2:
|
||||
WMSetLabelText(panel->kfocL, _("Set keyboard input focus to\n"\
|
||||
"the window under the mouse pointer,\n"\
|
||||
"except the root window."));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
raiseTextChanged(void *observerData, WMNotification *notification)
|
||||
{
|
||||
_Panel *panel = (_Panel*)observerData;
|
||||
int i;
|
||||
|
||||
if (panel->raiseDelaySelected) {
|
||||
for (i=0; i<5; i++) {
|
||||
WMSetButtonSelected(panel->raisB[i], False);
|
||||
}
|
||||
panel->raiseDelaySelected = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
int i;
|
||||
char *buf1, *buf2;
|
||||
WMPixmap *icon;
|
||||
WMColor *color;
|
||||
WMFont *font;
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
/***************** Input Focus Mode *****************/
|
||||
panel->kfocF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->kfocF, 240, 130);
|
||||
WMMoveWidget(panel->kfocF, 15, 15);
|
||||
WMSetFrameTitle(panel->kfocF, _("Input Focus Mode"));
|
||||
|
||||
panel->kfocP = WMCreatePopUpButton(panel->kfocF);
|
||||
WMResizeWidget(panel->kfocP, 210, 20);
|
||||
WMMoveWidget(panel->kfocP, 15, 30);
|
||||
WMAddPopUpButtonItem(panel->kfocP, _("Click window to focus"));
|
||||
WMAddPopUpButtonItem(panel->kfocP, _("Focus follows mouse"));
|
||||
WMAddPopUpButtonItem(panel->kfocP, _("\"Sloppy\" focus"));
|
||||
WMSetPopUpButtonAction(panel->kfocP, changeFocusMode, panel);
|
||||
|
||||
panel->kfocL = WMCreateLabel(panel->kfocF);
|
||||
WMResizeWidget(panel->kfocL, 211, 68);
|
||||
WMMoveWidget(panel->kfocL, 15, 55);
|
||||
WMSetLabelTextAlignment(panel->kfocL, WACenter);
|
||||
|
||||
WMMapSubwidgets(panel->kfocF);
|
||||
|
||||
/***************** Colormap Installation Mode ****************/
|
||||
|
||||
panel->cfocF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->cfocF, 240, 70);
|
||||
WMMoveWidget(panel->cfocF, 15, 150);
|
||||
WMSetFrameTitle(panel->cfocF, _("Install colormap in the window..."));
|
||||
|
||||
panel->manB = WMCreateRadioButton(panel->cfocF);
|
||||
WMResizeWidget(panel->manB, 220, 20);
|
||||
WMMoveWidget(panel->manB, 15, 18);
|
||||
WMSetButtonText(panel->manB, _("...that has the input focus."));
|
||||
|
||||
panel->autB = WMCreateRadioButton(panel->cfocF);
|
||||
WMResizeWidget(panel->autB, 220, 20);
|
||||
WMMoveWidget(panel->autB, 15, 40);
|
||||
WMSetButtonText(panel->autB, _("...that is under the mouse pointer."));
|
||||
WMGroupButtons(panel->manB, panel->autB);
|
||||
|
||||
WMMapSubwidgets(panel->cfocF);
|
||||
|
||||
/***************** Automatic window raise delay *****************/
|
||||
panel->raisF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->raisF, 245, 70);
|
||||
WMMoveWidget(panel->raisF, 265, 15);
|
||||
WMSetFrameTitle(panel->raisF, _("Automatic Window Raise Delay"));
|
||||
|
||||
buf1 = wmalloc(strlen(DELAY_ICON)+1);
|
||||
buf2 = wmalloc(strlen(DELAY_ICON_S)+1);
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
char *path;
|
||||
|
||||
panel->raisB[i] = WMCreateCustomButton(panel->raisF,
|
||||
WBBStateChangeMask);
|
||||
WMResizeWidget(panel->raisB[i], 25, 25);
|
||||
WMMoveWidget(panel->raisB[i], 10+(30*i), 25);
|
||||
WMSetButtonBordered(panel->raisB[i], False);
|
||||
WMSetButtonImagePosition(panel->raisB[i], WIPImageOnly);
|
||||
WMSetButtonAction(panel->raisB[i], pushDelayButton, panel);
|
||||
if (i>0)
|
||||
WMGroupButtons(panel->raisB[0], panel->raisB[i]);
|
||||
sprintf(buf1, DELAY_ICON, i);
|
||||
sprintf(buf2, DELAY_ICON_S, i);
|
||||
path = LocateImage(buf1);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->raisB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
path = LocateImage(buf2);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonAltImage(panel->raisB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
}
|
||||
free(buf1);
|
||||
free(buf2);
|
||||
|
||||
panel->raisT = WMCreateTextField(panel->raisF);
|
||||
WMResizeWidget(panel->raisT, 36, 20);
|
||||
WMMoveWidget(panel->raisT, 165, 30);
|
||||
WMAddNotificationObserver(raiseTextChanged, panel,
|
||||
WMTextDidChangeNotification, panel->raisT);
|
||||
|
||||
color = WMDarkGrayColor(scr);
|
||||
font = WMSystemFontOfSize(scr, 10);
|
||||
|
||||
panel->raisL = WMCreateLabel(panel->raisF);
|
||||
WMResizeWidget(panel->raisL, 36, 16);
|
||||
WMMoveWidget(panel->raisL, 205, 35);
|
||||
WMSetLabelText(panel->raisL, _("msec"));
|
||||
WMSetLabelTextColor(panel->raisL, color);
|
||||
WMSetLabelFont(panel->raisL, font);
|
||||
|
||||
WMReleaseColor(color);
|
||||
WMReleaseFont(font);
|
||||
|
||||
WMMapSubwidgets(panel->raisF);
|
||||
|
||||
/***************** Options ****************/
|
||||
panel->optF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->optF, 245, 125);
|
||||
WMMoveWidget(panel->optF, 265, 95);
|
||||
|
||||
panel->ignB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->ignB, 210, 50);
|
||||
WMMoveWidget(panel->ignB, 15, 10);
|
||||
WMSetButtonText(panel->ignB, _("Do not let aplications receive the "\
|
||||
"click used to focus windows."));
|
||||
|
||||
panel->newB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->newB, 210, 35);
|
||||
WMMoveWidget(panel->newB, 15, 70);
|
||||
WMSetButtonText(panel->newB, _("Automatically focus new windows."));
|
||||
|
||||
WMMapSubwidgets(panel->optF);
|
||||
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitFocus(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Window Focus Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
318
WPrefs.app/Icons.c
Normal file
318
WPrefs.app/Icons.c
Normal file
@@ -0,0 +1,318 @@
|
||||
/* Icons.c- icon preferences
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMFrame *posF;
|
||||
WMFrame *posVF;
|
||||
WMFrame *posV;
|
||||
|
||||
WMButton *nwB;
|
||||
WMButton *neB;
|
||||
WMButton *swB;
|
||||
WMButton *seB;
|
||||
WMButton *verB;
|
||||
WMButton *horB;
|
||||
|
||||
WMFrame *optF;
|
||||
WMButton *arrB;
|
||||
WMButton *omnB;
|
||||
|
||||
WMFrame *sizeF;
|
||||
WMPopUpButton *sizeP;
|
||||
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "iconprefs"
|
||||
|
||||
|
||||
static void
|
||||
showIconLayout(WMWidget *widget, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int w, h;
|
||||
|
||||
if (WMGetButtonSelected(panel->horB)) {
|
||||
w = 32;
|
||||
h = 8;
|
||||
} else {
|
||||
w = 8;
|
||||
h = 32;
|
||||
}
|
||||
WMResizeWidget(panel->posV, w, h);
|
||||
|
||||
if (WMGetButtonSelected(panel->nwB)) {
|
||||
WMMoveWidget(panel->posV, 2, 2);
|
||||
} else if (WMGetButtonSelected(panel->neB)) {
|
||||
WMMoveWidget(panel->posV, 95-2-w, 2);
|
||||
} else if (WMGetButtonSelected(panel->swB)) {
|
||||
WMMoveWidget(panel->posV, 2, 70-2-h);
|
||||
} else {
|
||||
WMMoveWidget(panel->posV, 95-2-w, 70-2-h);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define MIN(a,b) ((a) < (b) ? (a) : (b))
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
int i;
|
||||
char *str;
|
||||
char *def = "blh";
|
||||
|
||||
WMSetButtonSelected(panel->arrB, GetBoolForKey("AutoArrangeIcons"));
|
||||
|
||||
WMSetButtonSelected(panel->omnB, GetBoolForKey("StickyIcons"));
|
||||
|
||||
str = GetStringForKey("IconPosition");
|
||||
if (!str)
|
||||
str = def;
|
||||
if (strlen(str)!=3) {
|
||||
wwarning("bad value %s for option IconPosition. Using default blh",
|
||||
str);
|
||||
str = def;
|
||||
}
|
||||
|
||||
if (str[0]=='t' || str[0]=='T') {
|
||||
if (str[1]=='r' || str[1]=='R') {
|
||||
WMPerformButtonClick(panel->neB);
|
||||
} else {
|
||||
WMPerformButtonClick(panel->nwB);
|
||||
}
|
||||
} else {
|
||||
if (str[1]=='r' || str[1]=='R') {
|
||||
WMPerformButtonClick(panel->seB);
|
||||
} else {
|
||||
WMPerformButtonClick(panel->swB);
|
||||
}
|
||||
}
|
||||
if (str[2]=='v' || str[2]=='V') {
|
||||
WMPerformButtonClick(panel->verB);
|
||||
} else {
|
||||
WMPerformButtonClick(panel->horB);
|
||||
}
|
||||
|
||||
i = GetIntegerForKey("IconSize");
|
||||
i = (i-24)/8;
|
||||
|
||||
if (i<0)
|
||||
i = 0;
|
||||
else if (i>9)
|
||||
i = 9;
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, i);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
WMColor *color;
|
||||
int i;
|
||||
char buf[16];
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
/***************** Positioning of Icons *****************/
|
||||
panel->posF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->posF, 475, 135);
|
||||
WMMoveWidget(panel->posF, 25, 10);
|
||||
WMSetFrameTitle(panel->posF, _("Icon Positioning"));
|
||||
|
||||
panel->nwB = WMCreateRadioButton(panel->posF);
|
||||
WMResizeWidget(panel->nwB, 110, 20);
|
||||
WMMoveWidget(panel->nwB, 15, 25);
|
||||
WMSetButtonImagePosition(panel->nwB, WIPRight);
|
||||
WMSetButtonTextAlignment(panel->nwB, WARight);
|
||||
WMSetButtonText(panel->nwB, "Top left");
|
||||
WMSetButtonAction(panel->nwB, showIconLayout, panel);
|
||||
|
||||
panel->neB = WMCreateRadioButton(panel->posF);
|
||||
WMResizeWidget(panel->neB, 110, 20);
|
||||
WMMoveWidget(panel->neB, 230, 25);
|
||||
WMSetButtonImagePosition(panel->neB, WIPLeft);
|
||||
WMSetButtonTextAlignment(panel->neB, WALeft);
|
||||
WMSetButtonText(panel->neB, "Top right");
|
||||
WMSetButtonAction(panel->neB, showIconLayout, panel);
|
||||
|
||||
panel->swB = WMCreateRadioButton(panel->posF);
|
||||
WMResizeWidget(panel->swB, 110, 20);
|
||||
WMMoveWidget(panel->swB, 15, 95);
|
||||
WMSetButtonText(panel->swB, "Bottom left");
|
||||
WMSetButtonTextAlignment(panel->swB, WARight);
|
||||
WMSetButtonImagePosition(panel->swB, WIPRight);
|
||||
WMSetButtonAction(panel->swB, showIconLayout, panel);
|
||||
|
||||
panel->seB = WMCreateRadioButton(panel->posF);
|
||||
WMResizeWidget(panel->seB, 110, 20);
|
||||
WMMoveWidget(panel->seB, 230, 95);
|
||||
WMSetButtonText(panel->seB, "Bottom right");
|
||||
WMSetButtonAction(panel->seB, showIconLayout, panel);
|
||||
|
||||
WMGroupButtons(panel->nwB, panel->neB);
|
||||
WMGroupButtons(panel->nwB, panel->seB);
|
||||
WMGroupButtons(panel->nwB, panel->swB);
|
||||
|
||||
color = WMCreateRGBColor(WMWidgetScreen(panel->win), 0x5100, 0x5100,
|
||||
0x7100, True);
|
||||
panel->posVF = WMCreateFrame(panel->posF);
|
||||
WMResizeWidget(panel->posVF, 95, 70);
|
||||
WMMoveWidget(panel->posVF, 130, 35);
|
||||
WMSetFrameRelief(panel->posVF, WRSunken);
|
||||
WMSetWidgetBackgroundColor(panel->posVF, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
panel->posV = WMCreateFrame(panel->posVF);
|
||||
WMSetFrameRelief(panel->posV, WRSimple);
|
||||
|
||||
panel->verB = WMCreateRadioButton(panel->posF);
|
||||
WMResizeWidget(panel->verB, 120, 20);
|
||||
WMMoveWidget(panel->verB, 345, 45);
|
||||
WMSetButtonText(panel->verB, "Vertical");
|
||||
WMSetButtonAction(panel->verB, showIconLayout, panel);
|
||||
|
||||
panel->horB = WMCreateRadioButton(panel->posF);
|
||||
WMResizeWidget(panel->horB, 120, 20);
|
||||
WMMoveWidget(panel->horB, 345, 80);
|
||||
WMSetButtonText(panel->horB, "Horizontal");
|
||||
WMSetButtonAction(panel->horB, showIconLayout, panel);
|
||||
|
||||
|
||||
WMGroupButtons(panel->horB, panel->verB);
|
||||
|
||||
WMMapSubwidgets(panel->posF);
|
||||
|
||||
/***************** Options ****************/
|
||||
panel->optF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->optF, 260, 65);
|
||||
WMMoveWidget(panel->optF, 25, 155);
|
||||
|
||||
panel->arrB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->arrB, 235, 20);
|
||||
WMMoveWidget(panel->arrB, 15, 10);
|
||||
WMSetButtonText(panel->arrB, _("Auto-arrange icons"));
|
||||
|
||||
panel->omnB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->omnB, 235, 20);
|
||||
WMMoveWidget(panel->omnB, 15, 35);
|
||||
WMSetButtonText(panel->omnB, _("Omnipresent miniwindows"));
|
||||
|
||||
WMMapSubwidgets(panel->optF);
|
||||
|
||||
/***************** Icon Size ****************/
|
||||
panel->sizeF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->sizeF, 205, 70);
|
||||
WMMoveWidget(panel->sizeF, 295, 150);
|
||||
WMSetFrameTitle(panel->sizeF, _("Icon Size"));
|
||||
|
||||
|
||||
panel->sizeP = WMCreatePopUpButton(panel->sizeF);
|
||||
WMResizeWidget(panel->sizeP, 156, 20);
|
||||
WMMoveWidget(panel->sizeP, 25, 30);
|
||||
for (i=24; i<=96; i+=8) {
|
||||
sprintf(buf, "%ix%i", i, i);
|
||||
WMAddPopUpButtonItem(panel->sizeP, buf);
|
||||
}
|
||||
|
||||
WMMapSubwidgets(panel->sizeF);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
char buf[8];
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->arrB), "AutoArrangeIcons");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->omnB), "StickyIcons");
|
||||
|
||||
SetIntegerForKey(WMGetPopUpButtonSelectedItem(panel->sizeP)*8+24,
|
||||
"IconSize");
|
||||
|
||||
buf[3] = 0;
|
||||
if (WMGetButtonSelected(panel->nwB)) {
|
||||
buf[0] = 't';
|
||||
buf[1] = 'l';
|
||||
} else if (WMGetButtonSelected(panel->neB)) {
|
||||
buf[0] = 't';
|
||||
buf[1] = 'r';
|
||||
} else if (WMGetButtonSelected(panel->swB)) {
|
||||
buf[0] = 'b';
|
||||
buf[1] = 'l';
|
||||
} else {
|
||||
buf[0] = 'b';
|
||||
buf[1] = 'r';
|
||||
}
|
||||
|
||||
if (WMGetButtonSelected(panel->horB)) {
|
||||
buf[2] = 'h';
|
||||
} else {
|
||||
buf[2] = 'v';
|
||||
}
|
||||
SetStringForKey(buf, "IconPosition");
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitIcons(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Icon Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
181
WPrefs.app/KeyboardSettings.c
Normal file
181
WPrefs.app/KeyboardSettings.c
Normal file
@@ -0,0 +1,181 @@
|
||||
/* KeyboardSettings.c- keyboard options (equivalent to xset)
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMFrame *delaF;
|
||||
WMButton *delaB[4];
|
||||
WMLabel *dmsL;
|
||||
WMTextField *dmsT;
|
||||
|
||||
WMFrame *rateF;
|
||||
WMButton *rateB[4];
|
||||
WMLabel *rmsL;
|
||||
WMTextField *rmsT;
|
||||
|
||||
WMTextField *testT;
|
||||
} _Panel;
|
||||
|
||||
|
||||
#define ICON_FILE "keyboard"
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
int i;
|
||||
WMColor *color;
|
||||
WMFont *font;
|
||||
|
||||
color = WMDarkGrayColor(scr);
|
||||
font = WMSystemFontOfSize(scr, 10);
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
/**************** Initial Key Repeat ***************/
|
||||
panel->delaF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->delaF, 495, 60);
|
||||
WMMoveWidget(panel->delaF, 15, 10);
|
||||
WMSetFrameTitle(panel->delaF, _("Initial Key Repeat"));
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
panel->delaB[i] = WMCreateButton(panel->delaF, WBTOnOff);
|
||||
WMResizeWidget(panel->delaB[i], 60, 20);
|
||||
WMMoveWidget(panel->delaB[i], 70+i*60, 25);
|
||||
if (i>0)
|
||||
WMGroupButtons(panel->delaB[0], panel->delaB[i]);
|
||||
switch (i) {
|
||||
case 0:
|
||||
WMSetButtonText(panel->delaB[i], "....a");
|
||||
break;
|
||||
case 1:
|
||||
WMSetButtonText(panel->delaB[i], "...a");
|
||||
break;
|
||||
case 2:
|
||||
WMSetButtonText(panel->delaB[i], "..a");
|
||||
break;
|
||||
case 3:
|
||||
WMSetButtonText(panel->delaB[i], ".a");
|
||||
break;
|
||||
}
|
||||
}
|
||||
panel->dmsT = WMCreateTextField(panel->delaF);
|
||||
WMResizeWidget(panel->dmsT, 50, 20);
|
||||
WMMoveWidget(panel->dmsT, 345, 25);
|
||||
/* WMSetTextFieldAlignment(panel->dmsT, WARight);*/
|
||||
|
||||
panel->dmsL = WMCreateLabel(panel->delaF);
|
||||
WMResizeWidget(panel->dmsL, 30, 16);
|
||||
WMMoveWidget(panel->dmsL, 400, 30);
|
||||
WMSetLabelTextColor(panel->dmsL, color);
|
||||
WMSetLabelFont(panel->dmsL, font);
|
||||
WMSetLabelText(panel->dmsL, "msec");
|
||||
|
||||
WMMapSubwidgets(panel->delaF);
|
||||
|
||||
/**************** Key Repeat Rate ***************/
|
||||
panel->rateF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->rateF, 495, 60);
|
||||
WMMoveWidget(panel->rateF, 15, 95);
|
||||
WMSetFrameTitle(panel->rateF, _("Key Repeat Rate"));
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
panel->rateB[i] = WMCreateButton(panel->rateF, WBTOnOff);
|
||||
WMResizeWidget(panel->rateB[i], 60, 20);
|
||||
WMMoveWidget(panel->rateB[i], 70+i*60, 25);
|
||||
if (i>0)
|
||||
WMGroupButtons(panel->rateB[0], panel->rateB[i]);
|
||||
switch (i) {
|
||||
case 0:
|
||||
WMSetButtonText(panel->rateB[i], "a....a");
|
||||
break;
|
||||
case 1:
|
||||
WMSetButtonText(panel->rateB[i], "a...a");
|
||||
break;
|
||||
case 2:
|
||||
WMSetButtonText(panel->rateB[i], "a..a");
|
||||
break;
|
||||
case 3:
|
||||
WMSetButtonText(panel->rateB[i], "a.a");
|
||||
break;
|
||||
}
|
||||
}
|
||||
panel->rmsT = WMCreateTextField(panel->rateF);
|
||||
WMResizeWidget(panel->rmsT, 50, 20);
|
||||
WMMoveWidget(panel->rmsT, 345, 25);
|
||||
/* WMSetTextFieldAlignment(panel->rmsT, WARight);*/
|
||||
|
||||
panel->rmsL = WMCreateLabel(panel->rateF);
|
||||
WMResizeWidget(panel->rmsL, 30, 16);
|
||||
WMMoveWidget(panel->rmsL, 400, 30);
|
||||
WMSetLabelTextColor(panel->rmsL, color);
|
||||
WMSetLabelFont(panel->rmsL, font);
|
||||
WMSetLabelText(panel->rmsL, "msec");
|
||||
|
||||
WMMapSubwidgets(panel->rateF);
|
||||
|
||||
panel->testT = WMCreateTextField(panel->frame);
|
||||
WMResizeWidget(panel->testT, 480, 20);
|
||||
WMMoveWidget(panel->testT, 20, 180);
|
||||
WMSetTextFieldText(panel->testT, _("Type here to test"));
|
||||
|
||||
WMReleaseColor(color);
|
||||
WMReleaseFont(font);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitKeyboardSettings(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Keyboard Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
439
WPrefs.app/KeyboardShortcuts.c
Normal file
439
WPrefs.app/KeyboardShortcuts.c
Normal file
@@ -0,0 +1,439 @@
|
||||
/* KeyboardShortcuts.c- keyboard shortcut bindings
|
||||
*
|
||||
* WPrefs - WindowMaker 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 <ctype.h>
|
||||
|
||||
#include <X11/keysym.h>
|
||||
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMLabel *actL;
|
||||
WMList *actLs;
|
||||
|
||||
WMFrame *shoF;
|
||||
WMTextField *shoT;
|
||||
WMButton *cleB;
|
||||
WMButton *defB;
|
||||
|
||||
WMLabel *instructionsL;
|
||||
|
||||
/**/
|
||||
char capturing;
|
||||
char **shortcuts;
|
||||
int actionCount;
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "keyshortcuts"
|
||||
|
||||
|
||||
/* must be in the same order as the corresponding items in actions list */
|
||||
static char *keyOptions[] = {
|
||||
"RootMenuKey",
|
||||
"WindowListKey",
|
||||
"WindowMenuKey",
|
||||
"HideKey",
|
||||
"MiniaturizeKey",
|
||||
"CloseKey",
|
||||
"MaximizeKey",
|
||||
"VMaximizeKey",
|
||||
"RaiseKey",
|
||||
"LowerKey",
|
||||
"RaiseLowerKey",
|
||||
"ShadeKey",
|
||||
"SelectKey",
|
||||
"FocusNextKey",
|
||||
"FocusPrevKey",
|
||||
"NextWorkspaceKey",
|
||||
"PrevWorkspaceKey",
|
||||
"NextWorkspaceLayerKey",
|
||||
"PrevWorkspaceLayerKey",
|
||||
"Workspace1Key",
|
||||
"Workspace2Key",
|
||||
"Workspace3Key",
|
||||
"Workspace4Key",
|
||||
"Workspace5Key",
|
||||
"Workspace6Key",
|
||||
"Workspace7Key",
|
||||
"Workspace8Key",
|
||||
"Workspace9Key",
|
||||
"Workspace10Key",
|
||||
"ClipRaiseKey",
|
||||
"ClipLowerKey",
|
||||
"ClipRaiseLowerKey"
|
||||
};
|
||||
|
||||
|
||||
|
||||
static char*
|
||||
captureShortcut(Display *dpy, _Panel *panel)
|
||||
{
|
||||
XEvent ev;
|
||||
KeySym ksym;
|
||||
char buffer[64];
|
||||
char *key = NULL;
|
||||
|
||||
while (panel->capturing) {
|
||||
XAllowEvents(dpy, AsyncKeyboard, CurrentTime);
|
||||
WMNextEvent(dpy, &ev);
|
||||
if (ev.type==KeyPress && ev.xkey.keycode!=0) {
|
||||
ksym = XKeycodeToKeysym(dpy, ev.xkey.keycode, 0);
|
||||
if (!IsModifierKey(ksym)) {
|
||||
key=XKeysymToString(ksym);
|
||||
panel->capturing = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
WMHandleEvent(&ev);
|
||||
}
|
||||
|
||||
if (!key)
|
||||
return NULL;
|
||||
|
||||
buffer[0] = 0;
|
||||
|
||||
if (ev.xkey.state & ControlMask) {
|
||||
strcat(buffer, "Control+");
|
||||
}
|
||||
if (ev.xkey.state & ShiftMask) {
|
||||
strcat(buffer, "Shift+");
|
||||
}
|
||||
if (ev.xkey.state & Mod1Mask) {
|
||||
strcat(buffer, "Mod1+");
|
||||
}
|
||||
if (ev.xkey.state & Mod2Mask) {
|
||||
strcat(buffer, "Mod2+");
|
||||
}
|
||||
if (ev.xkey.state & Mod3Mask) {
|
||||
strcat(buffer, "Mod3+");
|
||||
}
|
||||
if (ev.xkey.state & Mod4Mask) {
|
||||
strcat(buffer, "Mod4+");
|
||||
}
|
||||
if (ev.xkey.state & Mod5Mask) {
|
||||
strcat(buffer, "Mod5+");
|
||||
}
|
||||
strcat(buffer, key);
|
||||
|
||||
return wstrdup(buffer);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
captureClick(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->win));
|
||||
char *shortcut;
|
||||
|
||||
if (!panel->capturing) {
|
||||
panel->capturing = 1;
|
||||
WMSetButtonText(w, _("Cancel"));
|
||||
WMSetLabelText(panel->instructionsL, _("Press the desired shortcut key(s) or click Cancel to stop capturing."));
|
||||
XGrabKeyboard(dpy, WMWidgetXID(panel->win), True, GrabModeAsync,
|
||||
GrabModeAsync, CurrentTime);
|
||||
shortcut = captureShortcut(dpy, panel);
|
||||
if (shortcut) {
|
||||
int row = WMGetListSelectedItemRow(panel->actLs);
|
||||
|
||||
WMSetTextFieldText(panel->shoT, shortcut);
|
||||
if (row>=0) {
|
||||
if (panel->shortcuts[row])
|
||||
free(panel->shortcuts[row]);
|
||||
panel->shortcuts[row] = shortcut;
|
||||
} else {
|
||||
free(shortcut);
|
||||
}
|
||||
}
|
||||
}
|
||||
panel->capturing = 0;
|
||||
WMSetButtonText(w, _("Capture"));
|
||||
WMSetLabelText(panel->instructionsL, _("Click Capture to interactively define the shortcut key."));
|
||||
XUngrabKeyboard(dpy, CurrentTime);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
clearShortcut(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int row = WMGetListSelectedItemRow(panel->actLs);
|
||||
|
||||
WMSetTextFieldText(panel->shoT, NULL);
|
||||
|
||||
if (row>=0) {
|
||||
if (panel->shortcuts[row])
|
||||
free(panel->shortcuts[row]);
|
||||
panel->shortcuts[row]=NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
typedKeys(void *observerData, WMNotification *notification)
|
||||
{
|
||||
_Panel *panel = (_Panel*)observerData;
|
||||
int row = WMGetListSelectedItemRow(panel->actLs);
|
||||
|
||||
if (row<0)
|
||||
return;
|
||||
|
||||
if (panel->shortcuts[row])
|
||||
free(panel->shortcuts[row]);
|
||||
panel->shortcuts[row] = WMGetTextFieldText(panel->shoT);
|
||||
if (strlen(panel->shortcuts[row])==0) {
|
||||
free(panel->shortcuts[row]);
|
||||
panel->shortcuts[row] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
listClick(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int row = WMGetListSelectedItemRow(w);
|
||||
|
||||
WMSetTextFieldText(panel->shoT, panel->shortcuts[row]);
|
||||
}
|
||||
|
||||
|
||||
static char*
|
||||
trimstr(char *str)
|
||||
{
|
||||
char *p = str;
|
||||
int i;
|
||||
|
||||
while (isspace(*p)) p++;
|
||||
p = wstrdup(p);
|
||||
i = strlen(p);
|
||||
while (isspace(p[i]) && i>0) {
|
||||
p[i]=0;
|
||||
i--;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
char *str;
|
||||
int i;
|
||||
|
||||
for (i=0; i<panel->actionCount; i++) {
|
||||
|
||||
str = GetStringForKey(keyOptions[i]);
|
||||
if (panel->shortcuts[i])
|
||||
free(panel->shortcuts[i]);
|
||||
if (str)
|
||||
panel->shortcuts[i] = trimstr(str);
|
||||
else
|
||||
panel->shortcuts[i] = NULL;
|
||||
|
||||
if (panel->shortcuts[i] &&
|
||||
(strcasecmp(panel->shortcuts[i], "none")==0
|
||||
|| strlen(panel->shortcuts[i])==0)) {
|
||||
free(panel->shortcuts[i]);
|
||||
panel->shortcuts[i] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
WMColor *color;
|
||||
WMFont *boldFont;
|
||||
|
||||
panel->capturing = 0;
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
boldFont = WMBoldSystemFontOfSize(scr, 12);
|
||||
|
||||
/* **************** Actions **************** */
|
||||
panel->actL = WMCreateLabel(panel->frame);
|
||||
WMResizeWidget(panel->actL, 280, 20);
|
||||
WMMoveWidget(panel->actL, 20, 10);
|
||||
WMSetLabelFont(panel->actL, boldFont);
|
||||
WMSetLabelText(panel->actL, _("Actions"));
|
||||
WMSetLabelRelief(panel->actL, WRSunken);
|
||||
WMSetLabelTextAlignment(panel->actL, WACenter);
|
||||
color = WMDarkGrayColor(scr);
|
||||
WMSetWidgetBackgroundColor(panel->actL, color);
|
||||
WMReleaseColor(color);
|
||||
color = WMWhiteColor(scr);
|
||||
WMSetLabelTextColor(panel->actL, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
panel->actLs = WMCreateList(panel->frame);
|
||||
WMResizeWidget(panel->actLs, 280, 190);
|
||||
WMMoveWidget(panel->actLs, 20, 32);
|
||||
|
||||
WMAddListItem(panel->actLs, _("Open applications menu"));
|
||||
WMAddListItem(panel->actLs, _("Open window list menu"));
|
||||
WMAddListItem(panel->actLs, _("Open window commands menu"));
|
||||
WMAddListItem(panel->actLs, _("Hide active application"));
|
||||
WMAddListItem(panel->actLs, _("Miniaturize active window"));
|
||||
WMAddListItem(panel->actLs, _("Close active window"));
|
||||
WMAddListItem(panel->actLs, _("Maximize active window"));
|
||||
WMAddListItem(panel->actLs, _("Maximize active window vertically"));
|
||||
WMAddListItem(panel->actLs, _("Raise active window"));
|
||||
WMAddListItem(panel->actLs, _("Lower active window"));
|
||||
WMAddListItem(panel->actLs, _("Raise/Lower window under mouse pointer"));
|
||||
WMAddListItem(panel->actLs, _("Shade active window"));
|
||||
WMAddListItem(panel->actLs, _("Select active window"));
|
||||
WMAddListItem(panel->actLs, _("Focus next window"));
|
||||
WMAddListItem(panel->actLs, _("Focus previous window"));
|
||||
WMAddListItem(panel->actLs, _("Switch to next workspace"));
|
||||
WMAddListItem(panel->actLs, _("Switch to previous workspace"));
|
||||
WMAddListItem(panel->actLs, _("Switch to next ten workspaces"));
|
||||
WMAddListItem(panel->actLs, _("Switch to previous ten workspaces"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 1"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 2"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 3"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 4"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 5"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 6"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 7"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 8"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 9"));
|
||||
WMAddListItem(panel->actLs, _("Switch to workspace 10"));
|
||||
WMAddListItem(panel->actLs, _("Raise Clip"));
|
||||
WMAddListItem(panel->actLs, _("Lower Clip"));
|
||||
WMAddListItem(panel->actLs, _("Raise/Lower Clip"));
|
||||
|
||||
WMSetListAction(panel->actLs, listClick, panel);
|
||||
|
||||
panel->actionCount = WMGetListNumberOfRows(panel->actLs);
|
||||
panel->shortcuts = wmalloc(sizeof(char*)*panel->actionCount);
|
||||
memset(panel->shortcuts, 0, sizeof(char*)*panel->actionCount);
|
||||
|
||||
/***************** Shortcut ****************/
|
||||
|
||||
panel->shoF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->shoF, 190, 210);
|
||||
WMMoveWidget(panel->shoF, 315, 10);
|
||||
WMSetFrameTitle(panel->shoF, _("Shortcut"));
|
||||
|
||||
panel->shoT = WMCreateTextField(panel->shoF);
|
||||
WMResizeWidget(panel->shoT, 160, 20);
|
||||
WMMoveWidget(panel->shoT, 15, 65);
|
||||
WMAddNotificationObserver(typedKeys, panel,
|
||||
WMTextDidChangeNotification, panel->shoT);
|
||||
|
||||
panel->cleB = WMCreateCommandButton(panel->shoF);
|
||||
WMResizeWidget(panel->cleB, 75, 24);
|
||||
WMMoveWidget(panel->cleB, 15, 95);
|
||||
WMSetButtonText(panel->cleB, _("Clear"));
|
||||
WMSetButtonAction(panel->cleB, clearShortcut, panel);
|
||||
|
||||
panel->defB = WMCreateCommandButton(panel->shoF);
|
||||
WMResizeWidget(panel->defB, 75, 24);
|
||||
WMMoveWidget(panel->defB, 100, 95);
|
||||
WMSetButtonText(panel->defB, _("Capture"));
|
||||
WMSetButtonAction(panel->defB, captureClick, panel);
|
||||
|
||||
panel->instructionsL = WMCreateLabel(panel->shoF);
|
||||
WMResizeWidget(panel->instructionsL, 160, 55);
|
||||
WMMoveWidget(panel->instructionsL, 15, 140);
|
||||
WMSetLabelTextAlignment(panel->instructionsL, WACenter);
|
||||
WMSetLabelText(panel->instructionsL, _("Click Capture to interactively define the shortcut key."));
|
||||
|
||||
WMMapSubwidgets(panel->shoF);
|
||||
|
||||
WMReleaseFont(boldFont);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
int i;
|
||||
char *str;
|
||||
|
||||
for (i=0; i<panel->actionCount; i++) {
|
||||
str = NULL;
|
||||
if (panel->shortcuts[i]) {
|
||||
str = trimstr(panel->shortcuts[i]);
|
||||
if (strlen(str)==0) {
|
||||
free(str);
|
||||
str = NULL;
|
||||
}
|
||||
}
|
||||
if (str) {
|
||||
SetStringForKey(str, keyOptions[i]);
|
||||
free(str);
|
||||
} else {
|
||||
SetStringForKey("None", keyOptions[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitKeyboardShortcuts(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Keyboard Shortcut Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
64
WPrefs.app/Makefile.am
Normal file
64
WPrefs.app/Makefile.am
Normal file
@@ -0,0 +1,64 @@
|
||||
SUBDIRS = xpm tiff po
|
||||
|
||||
nlsdir = @NLSDIR@
|
||||
|
||||
AUTOMAKE_OPTIONS = no-dependencies
|
||||
|
||||
wpexecbindir = @wprefsdir@
|
||||
|
||||
wpexecbin_PROGRAMS = WPrefs
|
||||
|
||||
wpdatadir = @wprefsdir@
|
||||
|
||||
wpdata_DATA = WPrefs.tiff WPrefs.xpm
|
||||
|
||||
EXTRA_DIST = $(wpdata_DATA)
|
||||
|
||||
WPrefs_SOURCES = \
|
||||
main.c \
|
||||
WPrefs.c \
|
||||
WPrefs.h \
|
||||
Configurations.c \
|
||||
Expert.c \
|
||||
Focus.c \
|
||||
Icons.c \
|
||||
KeyboardSettings.c \
|
||||
KeyboardShortcuts.c \
|
||||
Menu.c \
|
||||
MenuPreferences.c \
|
||||
MouseSettings.c \
|
||||
Paths.c \
|
||||
Preferences.c \
|
||||
Text.c \
|
||||
TextureAndColor.c \
|
||||
WindowHandling.c \
|
||||
Workspace.c \
|
||||
double.c \
|
||||
double.h \
|
||||
MenuGuru.c \
|
||||
xmodifier.c
|
||||
|
||||
CPPFLAGS = \
|
||||
@CPPFLAGS@ \
|
||||
@SHAPE@ @I18N@ @X_LOCALE@ \
|
||||
-DNLSDIR="\"$(nlsdir)\""
|
||||
|
||||
|
||||
INCLUDES = \
|
||||
-I$(top_srcdir)/wrlib \
|
||||
-I$(top_srcdir)/WINGs \
|
||||
@XCFLAGS@ \
|
||||
@LIBPL_INC_PATH@
|
||||
|
||||
WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
|
||||
|
||||
WPrefs_LDADD = \
|
||||
-L$(top_builddir)/WINGs -lWINGs\
|
||||
-L$(top_builddir)/wrlib -lwraster \
|
||||
@LIBPL_LIBS@ \
|
||||
@XLFLAGS@ \
|
||||
@GFXLIBS@ \
|
||||
@XLIBS@ \
|
||||
@X_EXTRA_LIBS@ \
|
||||
@INTLIBS@ \
|
||||
-lm
|
||||
439
WPrefs.app/Makefile.in
Normal file
439
WPrefs.app/Makefile.in
Normal file
@@ -0,0 +1,439 @@
|
||||
# Makefile.in generated automatically by automake 1.3 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
DISTDIR =
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
CC = @CC@
|
||||
CPP_PATH = @CPP_PATH@
|
||||
DFLAGS = @DFLAGS@
|
||||
GFXFLAGS = @GFXFLAGS@
|
||||
GFXLIBS = @GFXLIBS@
|
||||
I18N = @I18N@
|
||||
I18N_MB = @I18N_MB@
|
||||
ICONEXT = @ICONEXT@
|
||||
INTLIBS = @INTLIBS@
|
||||
LIBPL_INC_PATH = @LIBPL_INC_PATH@
|
||||
LIBPL_LIBS = @LIBPL_LIBS@
|
||||
LN_S = @LN_S@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MOFILES = @MOFILES@
|
||||
NLSDIR = @NLSDIR@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
REDUCE_APPICONS = @REDUCE_APPICONS@
|
||||
SHAPE = @SHAPE@
|
||||
SOUND = @SOUND@
|
||||
VERSION = @VERSION@
|
||||
WPMOFILES = @WPMOFILES@
|
||||
XCFLAGS = @XCFLAGS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XLFLAGS = @XLFLAGS@
|
||||
XLIBS = @XLIBS@
|
||||
XSHM = @XSHM@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LOCALE = @X_LOCALE@
|
||||
pixmapdir = @pixmapdir@
|
||||
wprefsdir = @wprefsdir@
|
||||
|
||||
SUBDIRS = xpm tiff po
|
||||
|
||||
nlsdir = @NLSDIR@
|
||||
|
||||
AUTOMAKE_OPTIONS = no-dependencies
|
||||
|
||||
wpexecbindir = @wprefsdir@
|
||||
|
||||
wpexecbin_PROGRAMS = WPrefs
|
||||
|
||||
wpdatadir = @wprefsdir@
|
||||
|
||||
wpdata_DATA = WPrefs.tiff WPrefs.xpm
|
||||
|
||||
EXTRA_DIST = $(wpdata_DATA)
|
||||
|
||||
WPrefs_SOURCES = \
|
||||
main.c \
|
||||
WPrefs.c \
|
||||
WPrefs.h \
|
||||
Configurations.c \
|
||||
Expert.c \
|
||||
Focus.c \
|
||||
Icons.c \
|
||||
KeyboardSettings.c \
|
||||
KeyboardShortcuts.c \
|
||||
Menu.c \
|
||||
MenuPreferences.c \
|
||||
MouseSettings.c \
|
||||
Paths.c \
|
||||
Preferences.c \
|
||||
Text.c \
|
||||
TextureAndColor.c \
|
||||
WindowHandling.c \
|
||||
Workspace.c \
|
||||
double.c \
|
||||
double.h \
|
||||
MenuGuru.c \
|
||||
xmodifier.c
|
||||
|
||||
CPPFLAGS = \
|
||||
@CPPFLAGS@ \
|
||||
@SHAPE@ @I18N@ @X_LOCALE@ \
|
||||
-DNLSDIR="\"$(nlsdir)\""
|
||||
|
||||
INCLUDES = \
|
||||
-I$(top_srcdir)/wrlib \
|
||||
-I$(top_srcdir)/WINGs \
|
||||
@XCFLAGS@ \
|
||||
@LIBPL_INC_PATH@
|
||||
|
||||
WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
|
||||
|
||||
WPrefs_LDADD = \
|
||||
-L$(top_builddir)/WINGs -lWINGs\
|
||||
-L$(top_builddir)/wrlib -lwraster \
|
||||
@LIBPL_LIBS@ \
|
||||
@XLFLAGS@ \
|
||||
@GFXLIBS@ \
|
||||
@XLIBS@ \
|
||||
@X_EXTRA_LIBS@ \
|
||||
@INTLIBS@ \
|
||||
-lm
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../src/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
PROGRAMS = $(wpexecbin_PROGRAMS)
|
||||
|
||||
|
||||
DEFS = @DEFS@ -I. -I$(srcdir) -I../src
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_LIBS = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
WPrefs_OBJECTS = main.o WPrefs.o Configurations.o Expert.o Focus.o \
|
||||
Icons.o KeyboardSettings.o KeyboardShortcuts.o Menu.o MenuPreferences.o \
|
||||
MouseSettings.o Paths.o Preferences.o Text.o TextureAndColor.o \
|
||||
WindowHandling.o Workspace.o double.o MenuGuru.o xmodifier.o
|
||||
WPrefs_LDFLAGS =
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
||||
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
DATA = $(wpdata_DATA)
|
||||
|
||||
DIST_COMMON = README Makefile.am Makefile.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
SOURCES = $(WPrefs_SOURCES)
|
||||
OBJECTS = $(WPrefs_OBJECTS)
|
||||
|
||||
all: all-recursive all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .S .c .o .s
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu WPrefs.app/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
|
||||
mostlyclean-wpexecbinPROGRAMS:
|
||||
|
||||
clean-wpexecbinPROGRAMS:
|
||||
-test -z "$(wpexecbin_PROGRAMS)" || rm -f $(wpexecbin_PROGRAMS)
|
||||
|
||||
distclean-wpexecbinPROGRAMS:
|
||||
|
||||
maintainer-clean-wpexecbinPROGRAMS:
|
||||
|
||||
install-wpexecbinPROGRAMS: $(wpexecbin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(wpexecbindir)
|
||||
@list='$(wpexecbin_PROGRAMS)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(wpexecbindir)/`echo $$p|sed '$(transform)'`"; \
|
||||
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(wpexecbindir)/`echo $$p|sed '$(transform)'`; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-wpexecbinPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
list='$(wpexecbin_PROGRAMS)'; for p in $$list; do \
|
||||
rm -f $(DESTDIR)$(wpexecbindir)/`echo $$p|sed '$(transform)'`; \
|
||||
done
|
||||
|
||||
.c.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
.s.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
.S.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.o core *.core
|
||||
|
||||
clean-compile:
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
maintainer-clean-compile:
|
||||
|
||||
WPrefs: $(WPrefs_OBJECTS) $(WPrefs_DEPENDENCIES)
|
||||
@rm -f WPrefs
|
||||
$(LINK) $(WPrefs_LDFLAGS) $(WPrefs_OBJECTS) $(WPrefs_LDADD) $(LIBS)
|
||||
|
||||
install-wpdataDATA: $(wpdata_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(wpdatadir)
|
||||
@list='$(wpdata_DATA)'; for p in $$list; do \
|
||||
if test -f $(srcdir)/$$p; then \
|
||||
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(wpdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(wpdatadir)/$$p; \
|
||||
else if test -f $$p; then \
|
||||
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(wpdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $$p $(DESTDIR)$(wpdatadir)/$$p; \
|
||||
fi; fi; \
|
||||
done
|
||||
|
||||
uninstall-wpdataDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
list='$(wpdata_DATA)'; for p in $$list; do \
|
||||
rm -f $(DESTDIR)$(wpdatadir)/$$p; \
|
||||
done
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
all-recursive install-data-recursive install-exec-recursive \
|
||||
installdirs-recursive install-recursive uninstall-recursive \
|
||||
check-recursive installcheck-recursive info-recursive dvi-recursive:
|
||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
(cd $$subdir && $(MAKE) $$target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
||||
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
rev="$$subdir $$rev"; \
|
||||
done; \
|
||||
for subdir in $$rev; do \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
(cd $$subdir && $(MAKE) $$target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
(cd $$subdir && $(MAKE) tags); \
|
||||
done
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||
here=`pwd` && cd $(srcdir) \
|
||||
&& mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
||||
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
|
||||
|
||||
mostlyclean-tags:
|
||||
|
||||
clean-tags:
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID
|
||||
|
||||
maintainer-clean-tags:
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
|
||||
subdir = WPrefs.app
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
done
|
||||
for subdir in $(SUBDIRS); do \
|
||||
test -d $(distdir)/$$subdir \
|
||||
|| mkdir $(distdir)/$$subdir \
|
||||
|| exit 1; \
|
||||
chmod 777 $(distdir)/$$subdir; \
|
||||
(cd $$subdir && $(MAKE) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \
|
||||
|| exit 1; \
|
||||
done
|
||||
info: info-recursive
|
||||
dvi: dvi-recursive
|
||||
check: all-am
|
||||
$(MAKE) check-recursive
|
||||
installcheck: installcheck-recursive
|
||||
all-am: Makefile $(PROGRAMS) $(DATA)
|
||||
|
||||
install-exec-am: install-wpexecbinPROGRAMS
|
||||
|
||||
install-data-am: install-wpdataDATA
|
||||
|
||||
uninstall-am: uninstall-wpexecbinPROGRAMS uninstall-wpdataDATA
|
||||
|
||||
install-exec: install-exec-recursive install-exec-am
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install-data: install-data-recursive install-data-am
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-recursive install-exec-am install-data-am
|
||||
@:
|
||||
|
||||
uninstall: uninstall-recursive uninstall-am
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
installdirs: installdirs-recursive
|
||||
$(mkinstalldirs) $(DATADIR)$(wpexecbindir) $(DATADIR)$(wpdatadir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(DISTCLEANFILES)
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean-am: mostlyclean-wpexecbinPROGRAMS mostlyclean-compile \
|
||||
mostlyclean-tags mostlyclean-generic
|
||||
|
||||
clean-am: clean-wpexecbinPROGRAMS clean-compile clean-tags \
|
||||
clean-generic mostlyclean-am
|
||||
|
||||
distclean-am: distclean-wpexecbinPROGRAMS distclean-compile \
|
||||
distclean-tags distclean-generic clean-am
|
||||
|
||||
maintainer-clean-am: maintainer-clean-wpexecbinPROGRAMS \
|
||||
maintainer-clean-compile maintainer-clean-tags \
|
||||
maintainer-clean-generic distclean-am
|
||||
|
||||
mostlyclean: mostlyclean-recursive mostlyclean-am
|
||||
|
||||
clean: clean-recursive clean-am
|
||||
|
||||
distclean: distclean-recursive distclean-am
|
||||
-rm -f config.status
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive maintainer-clean-am
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
.PHONY: mostlyclean-wpexecbinPROGRAMS distclean-wpexecbinPROGRAMS \
|
||||
clean-wpexecbinPROGRAMS maintainer-clean-wpexecbinPROGRAMS \
|
||||
uninstall-wpexecbinPROGRAMS install-wpexecbinPROGRAMS \
|
||||
mostlyclean-compile distclean-compile clean-compile \
|
||||
maintainer-clean-compile uninstall-wpdataDATA install-wpdataDATA \
|
||||
install-data-recursive uninstall-data-recursive install-exec-recursive \
|
||||
uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
|
||||
all-recursive check-recursive installcheck-recursive info-recursive \
|
||||
dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
|
||||
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
|
||||
distclean-tags clean-tags maintainer-clean-tags distdir info dvi \
|
||||
installcheck all-am install-exec-am install-data-am uninstall-am \
|
||||
install-exec install-data install uninstall all installdirs \
|
||||
mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
1366
WPrefs.app/Menu.c
Normal file
1366
WPrefs.app/Menu.c
Normal file
File diff suppressed because it is too large
Load Diff
502
WPrefs.app/MenuGuru.c
Normal file
502
WPrefs.app/MenuGuru.c
Normal file
@@ -0,0 +1,502 @@
|
||||
/* MenuGuru.c- OPEN_MENU definition "guru" assistant
|
||||
*
|
||||
* WPrefs - WindowMaker 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 <assert.h>
|
||||
#include <ctype.h>
|
||||
|
||||
|
||||
typedef struct _MenuGuru {
|
||||
WMWindow *win;
|
||||
|
||||
WMButton *nextB;
|
||||
WMButton *backB;
|
||||
WMButton *cancelB;
|
||||
|
||||
WMLabel *typetopL;
|
||||
WMButton *typefB;
|
||||
WMButton *typepB;
|
||||
WMButton *typedB;
|
||||
|
||||
WMLabel *pathtopL;
|
||||
WMTextField *pathT;
|
||||
WMButton *pathB;
|
||||
WMLabel *pathbotL;
|
||||
|
||||
WMLabel *pipetopL;
|
||||
WMTextField *pipeT;
|
||||
WMLabel *pipebotL;
|
||||
|
||||
WMLabel *dirtopL;
|
||||
WMTextField *dirT;
|
||||
WMLabel *dirbotL;
|
||||
|
||||
WMLabel *progtopL;
|
||||
WMTextField *progT;
|
||||
WMLabel *progbotL;
|
||||
|
||||
|
||||
char ok;
|
||||
char end;
|
||||
int section;
|
||||
} MenuGuru;
|
||||
|
||||
|
||||
enum {
|
||||
GSelectType,
|
||||
GSelectFile,
|
||||
GSelectPaths,
|
||||
GSelectPipe,
|
||||
GSelectProgram,
|
||||
GDone
|
||||
};
|
||||
|
||||
|
||||
|
||||
static char*
|
||||
trimstr(char *str)
|
||||
{
|
||||
char *p = str;
|
||||
int i;
|
||||
|
||||
while (isspace(*p)) p++;
|
||||
p = wstrdup(p);
|
||||
i = strlen(p);
|
||||
while (isspace(p[i]) && i>0) {
|
||||
p[i] = 0;
|
||||
i--;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
showPart(MenuGuru *panel, int part)
|
||||
{
|
||||
WMUnmapSubwidgets(panel->win);
|
||||
WMMapWidget(panel->nextB);
|
||||
WMMapWidget(panel->backB);
|
||||
WMMapWidget(panel->cancelB);
|
||||
|
||||
WMSetButtonEnabled(panel->backB, part!=GSelectType);
|
||||
|
||||
switch (part) {
|
||||
case GSelectType:
|
||||
WMSetWindowTitle(panel->win, _("Menu Guru - Select Type"));
|
||||
WMMapWidget(panel->typetopL);
|
||||
WMMapWidget(panel->typedB);
|
||||
WMMapWidget(panel->typepB);
|
||||
WMMapWidget(panel->typefB);
|
||||
WMSetButtonText(panel->nextB, _("Next"));
|
||||
break;
|
||||
case GSelectFile:
|
||||
WMSetWindowTitle(panel->win, _("Menu Guru - Select Menu File"));
|
||||
WMMapWidget(panel->pathtopL);
|
||||
WMMapWidget(panel->pathT);
|
||||
/* WMMapWidget(panel->pathB);*/
|
||||
WMMapWidget(panel->pathbotL);
|
||||
WMSetButtonText(panel->nextB, _("OK"));
|
||||
break;
|
||||
case GSelectPipe:
|
||||
WMSetWindowTitle(panel->win, _("Menu Guru - Select Pipe Command"));
|
||||
WMMapWidget(panel->pipetopL);
|
||||
WMMapWidget(panel->pipeT);
|
||||
WMMapWidget(panel->pipebotL);
|
||||
WMSetButtonText(panel->nextB, _("OK"));
|
||||
break;
|
||||
case GSelectPaths:
|
||||
WMSetWindowTitle(panel->win, _("Menu Guru - Select Directories"));
|
||||
WMMapWidget(panel->dirtopL);
|
||||
WMMapWidget(panel->dirT);
|
||||
WMMapWidget(panel->dirbotL);
|
||||
WMSetButtonText(panel->nextB, _("Next"));
|
||||
break;
|
||||
case GSelectProgram:
|
||||
WMSetWindowTitle(panel->win, _("Menu Guru - Select Command"));
|
||||
WMMapWidget(panel->progtopL);
|
||||
WMMapWidget(panel->progT);
|
||||
WMMapWidget(panel->progbotL);
|
||||
WMSetButtonText(panel->nextB, _("OK"));
|
||||
break;
|
||||
}
|
||||
panel->section = part;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
clickNext(WMWidget *w, void *data)
|
||||
{
|
||||
MenuGuru *panel = (MenuGuru*)data;
|
||||
char *tmp, *p;
|
||||
|
||||
switch (panel->section) {
|
||||
case GSelectType:
|
||||
if (WMGetButtonSelected(panel->typefB)) {
|
||||
showPart(panel, GSelectFile);
|
||||
} else if (WMGetButtonSelected(panel->typepB)) {
|
||||
showPart(panel, GSelectPipe);
|
||||
} else {
|
||||
showPart(panel, GSelectPaths);
|
||||
}
|
||||
break;
|
||||
case GSelectFile:
|
||||
tmp = WMGetTextFieldText(panel->pathT);
|
||||
p = trimstr(tmp); free(tmp);
|
||||
if (strlen(p)==0) {
|
||||
free(p);
|
||||
return;
|
||||
}
|
||||
free(p);
|
||||
panel->ok = 1;
|
||||
panel->end = 1;
|
||||
break;
|
||||
case GSelectPaths:
|
||||
tmp = WMGetTextFieldText(panel->dirT);
|
||||
p = trimstr(tmp); free(tmp);
|
||||
if (strlen(p)==0) {
|
||||
free(p);
|
||||
return;
|
||||
}
|
||||
free(p);
|
||||
showPart(panel, GSelectProgram);
|
||||
break;
|
||||
case GSelectPipe:
|
||||
tmp = WMGetTextFieldText(panel->pipeT);
|
||||
p = trimstr(tmp); free(tmp);
|
||||
if (strlen(p)==0) {
|
||||
free(p);
|
||||
return;
|
||||
}
|
||||
free(p);
|
||||
panel->ok = 1;
|
||||
panel->end = 1;
|
||||
break;
|
||||
case GSelectProgram:
|
||||
panel->ok = 1;
|
||||
panel->end = 1;
|
||||
break;
|
||||
default:
|
||||
panel->end = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
clickBack(WMWidget *w, void *data)
|
||||
{
|
||||
MenuGuru *panel = (MenuGuru*)data;
|
||||
int newSection;
|
||||
|
||||
switch (panel->section) {
|
||||
case GSelectFile:
|
||||
newSection = GSelectType;
|
||||
break;
|
||||
case GSelectPipe:
|
||||
newSection = GSelectType;
|
||||
break;
|
||||
case GSelectPaths:
|
||||
newSection = GSelectType;
|
||||
break;
|
||||
case GSelectProgram:
|
||||
newSection = GSelectPaths;
|
||||
break;
|
||||
default:
|
||||
newSection = panel->section;
|
||||
}
|
||||
showPart(panel, newSection);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
closeWindow(WMWidget *w, void *data)
|
||||
{
|
||||
MenuGuru *panel = (MenuGuru*)data;
|
||||
|
||||
panel->end = 1;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createPanel(WMWindow *mainWindow, MenuGuru *panel)
|
||||
{
|
||||
panel->win = WMCreatePanelForWindow(mainWindow, "menuGuru");
|
||||
WMResizeWidget(panel->win, 370, 220);
|
||||
|
||||
panel->nextB = WMCreateCommandButton(panel->win);
|
||||
WMResizeWidget(panel->nextB, 80, 24);
|
||||
WMMoveWidget(panel->nextB, 280, 185);
|
||||
WMSetButtonText(panel->nextB, _("Next"));
|
||||
WMSetButtonAction(panel->nextB, clickNext, panel);
|
||||
|
||||
panel->backB = WMCreateCommandButton(panel->win);
|
||||
WMResizeWidget(panel->backB, 80, 24);
|
||||
WMMoveWidget(panel->backB, 195, 185);
|
||||
WMSetButtonText(panel->backB, _("Back"));
|
||||
WMSetButtonAction(panel->backB, clickBack, panel);
|
||||
|
||||
panel->cancelB = WMCreateCommandButton(panel->win);
|
||||
WMResizeWidget(panel->cancelB, 80, 24);
|
||||
WMMoveWidget(panel->cancelB, 110, 185);
|
||||
WMSetButtonText(panel->cancelB, _("Cancel"));
|
||||
WMSetButtonAction(panel->cancelB, closeWindow, panel);
|
||||
|
||||
/**/
|
||||
|
||||
panel->typetopL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->typetopL, 350, 45);
|
||||
WMMoveWidget(panel->typetopL, 10, 10);
|
||||
WMSetLabelText(panel->typetopL, _("This process will help you create a "
|
||||
"submenu which definition is located in another file "
|
||||
"or is created dynamically.\nWhat do you want to use as the "
|
||||
"contents of the submenu?"));
|
||||
|
||||
panel->typefB = WMCreateRadioButton(panel->win);
|
||||
WMResizeWidget(panel->typefB, 330, 35);
|
||||
WMMoveWidget(panel->typefB, 20, 65);
|
||||
WMSetButtonText(panel->typefB, _("A file containing the menu definition "
|
||||
"in the plain text (non-property list) menu format."));
|
||||
|
||||
panel->typepB = WMCreateRadioButton(panel->win);
|
||||
WMResizeWidget(panel->typepB, 330, 35);
|
||||
WMMoveWidget(panel->typepB, 20, 105);
|
||||
WMSetButtonText(panel->typepB, _("The menu definition generated by a "
|
||||
"script/program read through a pipe."));
|
||||
|
||||
panel->typedB = WMCreateRadioButton(panel->win);
|
||||
WMResizeWidget(panel->typedB, 330, 35);
|
||||
WMMoveWidget(panel->typedB, 20, 140);
|
||||
WMSetButtonText(panel->typedB, _("The files in one or more directories."));
|
||||
|
||||
WMGroupButtons(panel->typefB, panel->typepB);
|
||||
WMGroupButtons(panel->typefB, panel->typedB);
|
||||
|
||||
WMPerformButtonClick(panel->typefB);
|
||||
|
||||
/**/
|
||||
|
||||
panel->pathtopL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->pathtopL, 330, 20);
|
||||
WMMoveWidget(panel->pathtopL, 20, 25);
|
||||
WMSetLabelText(panel->pathtopL, _("Type the path for the menu file:"));
|
||||
|
||||
panel->pathT = WMCreateTextField(panel->win);
|
||||
WMResizeWidget(panel->pathT, 330, 20);
|
||||
WMMoveWidget(panel->pathT, 20, 50);
|
||||
/*
|
||||
panel->pathB = WMCreateCommandButton(panel->win);
|
||||
WMResizeWidget(panel->pathB, 70, 24);
|
||||
WMMoveWidget(panel->pathB, 275, 75);
|
||||
WMSetButtonText(panel->pathB, _("Browse"));
|
||||
*/
|
||||
|
||||
panel->pathbotL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->pathbotL, 330, 80);
|
||||
WMMoveWidget(panel->pathbotL, 20, 100);
|
||||
WMSetLabelText(panel->pathbotL, _("The menu file must contain a menu "
|
||||
"in the plain text menu file format. This format is "
|
||||
"described in the menu files included with WindowMaker, "
|
||||
"probably at ~/GNUstep/Library/WindowMaker/menu"));
|
||||
|
||||
/**/
|
||||
|
||||
panel->pipetopL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->pipetopL, 330, 32);
|
||||
WMMoveWidget(panel->pipetopL, 20, 20);
|
||||
WMSetLabelText(panel->pipetopL, _("Type the command that will generate "
|
||||
"the menu definition:"));
|
||||
|
||||
panel->pipeT = WMCreateTextField(panel->win);
|
||||
WMResizeWidget(panel->pipeT, 330, 20);
|
||||
WMMoveWidget(panel->pipeT, 20, 55);
|
||||
|
||||
panel->pipebotL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->pipebotL, 330, 80);
|
||||
WMMoveWidget(panel->pipebotL, 20, 85);
|
||||
WMSetLabelText(panel->pipebotL, _("The command supplied must generate and "
|
||||
"output a valid menu definition to stdout. This definition "
|
||||
"should be in the plain text menu file format, described "
|
||||
"in the menu files included with WindowMaker, usually "
|
||||
"at ~/GNUstep/Library/WindowMaker/menu"));
|
||||
|
||||
|
||||
/**/
|
||||
|
||||
panel->dirtopL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->dirtopL, 330, 32);
|
||||
WMMoveWidget(panel->dirtopL, 20, 20);
|
||||
WMSetLabelText(panel->dirtopL, _("Type the path for the directory. You "
|
||||
"can type more than one path by separating them with "
|
||||
"spaces."));
|
||||
|
||||
panel->dirT = WMCreateTextField(panel->win);
|
||||
WMResizeWidget(panel->dirT, 330, 20);
|
||||
WMMoveWidget(panel->dirT, 20, 55);
|
||||
|
||||
panel->dirbotL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->dirbotL, 330, 80);
|
||||
WMMoveWidget(panel->dirbotL, 20, 85);
|
||||
WMSetLabelText(panel->dirbotL, _("The menu generated will have an item "
|
||||
"for each file in the directory. The directories can "
|
||||
"contain program executables or data files (such as "
|
||||
"jpeg images)."));
|
||||
|
||||
|
||||
/**/
|
||||
|
||||
panel->dirtopL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->dirtopL, 330, 32);
|
||||
WMMoveWidget(panel->dirtopL, 20, 20);
|
||||
WMSetLabelText(panel->dirtopL, _("Type the path for the directory. You "
|
||||
"can type more than one path by separating them with "
|
||||
"spaces."));
|
||||
|
||||
panel->dirT = WMCreateTextField(panel->win);
|
||||
WMResizeWidget(panel->dirT, 330, 20);
|
||||
WMMoveWidget(panel->dirT, 20, 55);
|
||||
|
||||
panel->dirbotL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->dirbotL, 330, 80);
|
||||
WMMoveWidget(panel->dirbotL, 20, 85);
|
||||
WMSetLabelText(panel->dirbotL, _("The menu generated will have an item "
|
||||
"for each file in the directory. The directories can "
|
||||
"contain program executables or data files (such as "
|
||||
"jpeg images)."));
|
||||
|
||||
|
||||
/**/
|
||||
|
||||
panel->dirtopL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->dirtopL, 330, 32);
|
||||
WMMoveWidget(panel->dirtopL, 20, 20);
|
||||
WMSetLabelText(panel->dirtopL, _("Type the path for the directory. You "
|
||||
"can type more than one path by separating them with "
|
||||
"spaces."));
|
||||
|
||||
panel->dirT = WMCreateTextField(panel->win);
|
||||
WMResizeWidget(panel->dirT, 330, 20);
|
||||
WMMoveWidget(panel->dirT, 20, 60);
|
||||
|
||||
panel->dirbotL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->dirbotL, 330, 80);
|
||||
WMMoveWidget(panel->dirbotL, 20, 85);
|
||||
WMSetLabelText(panel->dirbotL, _("The menu generated will have an item "
|
||||
"for each file in the directory. The directories can "
|
||||
"contain program executables or data files (such as "
|
||||
"jpeg images)."));
|
||||
|
||||
/**/
|
||||
|
||||
panel->progtopL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->progtopL, 330, 48);
|
||||
WMMoveWidget(panel->progtopL, 20, 10);
|
||||
WMSetLabelText(panel->progtopL, _("If the directory contain data files, "
|
||||
"type the command used to open these files. Otherwise, "
|
||||
"leave it in blank."));
|
||||
|
||||
panel->progT = WMCreateTextField(panel->win);
|
||||
WMResizeWidget(panel->progT, 330, 20);
|
||||
WMMoveWidget(panel->progT, 20, 60);
|
||||
|
||||
panel->progbotL = WMCreateLabel(panel->win);
|
||||
WMResizeWidget(panel->progbotL, 330, 72);
|
||||
WMMoveWidget(panel->progbotL, 20, 90);
|
||||
WMSetLabelText(panel->progbotL, _("Each file in the directory will have "
|
||||
"an item and they will be opened with the supplied command."
|
||||
"For example, if the directory contains image files and "
|
||||
"the command is \"xv -root\", each file in the directory "
|
||||
"will have a menu item like \"xv -root imagefile\"."));
|
||||
|
||||
WMRealizeWidget(panel->win);
|
||||
}
|
||||
|
||||
|
||||
|
||||
char*
|
||||
OpenMenuGuru(WMWindow *mainWindow)
|
||||
{
|
||||
WMScreen *scr = WMWidgetScreen(mainWindow);
|
||||
MenuGuru panel;
|
||||
char *text, *p, *dirs;
|
||||
|
||||
createPanel(mainWindow, &panel);
|
||||
WMSetWindowCloseAction(panel.win, closeWindow, &panel);
|
||||
|
||||
showPart(&panel, GSelectType);
|
||||
|
||||
WMMapWidget(panel.win);
|
||||
|
||||
panel.ok = 0;
|
||||
panel.end = 0;
|
||||
while (!panel.end) {
|
||||
XEvent ev;
|
||||
WMNextEvent(WMScreenDisplay(scr), &ev);
|
||||
WMHandleEvent(&ev);
|
||||
}
|
||||
|
||||
text = NULL;
|
||||
if (panel.ok) {
|
||||
switch (panel.section) {
|
||||
case GSelectFile:
|
||||
text = WMGetTextFieldText(panel.pathT);
|
||||
break;
|
||||
case GSelectPipe:
|
||||
text = WMGetTextFieldText(panel.pipeT);
|
||||
p = trimstr(text); free(text);
|
||||
if (p[0]!='|') {
|
||||
text = wmalloc(strlen(p)+4);
|
||||
strcpy(text, "| ");
|
||||
strcat(text, p);
|
||||
free(p);
|
||||
} else {
|
||||
text = p;
|
||||
}
|
||||
break;
|
||||
case GSelectProgram:
|
||||
dirs = WMGetTextFieldText(panel.dirT);
|
||||
text = WMGetTextFieldText(panel.progT);
|
||||
p = trimstr(text); free(text);
|
||||
if (strlen(p)==0) {
|
||||
free(p);
|
||||
text = dirs;
|
||||
} else {
|
||||
text = wmalloc(strlen(dirs)+16+strlen(p));
|
||||
sprintf(text, "%s WITH %s", dirs, p);
|
||||
free(dirs);
|
||||
free(p);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
WMDestroyWidget(panel.win);
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
239
WPrefs.app/MenuPreferences.c
Normal file
239
WPrefs.app/MenuPreferences.c
Normal file
@@ -0,0 +1,239 @@
|
||||
/* MenuPreferences.c- menu related preferences
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMFrame *scrF;
|
||||
WMButton *scrB[5];
|
||||
|
||||
WMFrame *aliF;
|
||||
WMButton *aliyB;
|
||||
WMButton *alinB;
|
||||
|
||||
WMFrame *optF;
|
||||
WMButton *autoB;
|
||||
WMButton *wrapB;
|
||||
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "menuprefs"
|
||||
#define SPEED_IMAGE "speed%i"
|
||||
#define SPEED_IMAGE_S "speed%is"
|
||||
|
||||
#define MENU_ALIGN1 "menualign1"
|
||||
#define MENU_ALIGN2 "menualign2"
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
WMPerformButtonClick(panel->scrB[GetSpeedForKey("MenuScrollSpeed")]);
|
||||
|
||||
if (GetBoolForKey("AlignSubmenus"))
|
||||
WMPerformButtonClick(panel->aliyB);
|
||||
else
|
||||
WMPerformButtonClick(panel->alinB);
|
||||
|
||||
WMSetButtonSelected(panel->wrapB, GetBoolForKey("WrapMenus"));
|
||||
|
||||
WMSetButtonSelected(panel->autoB, GetBoolForKey("ScrollableMenus"));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<5; i++) {
|
||||
if (WMGetButtonSelected(panel->scrB[i]))
|
||||
break;
|
||||
}
|
||||
SetSpeedForKey(i, "MenuScrollSpeed");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->aliyB), "AlignSubmenus");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->wrapB), "WrapMenus");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->autoB), "ScrollableMenus");
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
|
||||
WMPixmap *icon;
|
||||
int i;
|
||||
char *buf1, *buf2;
|
||||
char *path;
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
|
||||
/***************** Menu Scroll Speed ****************/
|
||||
panel->scrF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->scrF, 235, 90);
|
||||
WMMoveWidget(panel->scrF, 25, 20);
|
||||
WMSetFrameTitle(panel->scrF, _("Menu Scrolling Speed"));
|
||||
|
||||
|
||||
buf1 = wmalloc(strlen(SPEED_IMAGE)+1);
|
||||
buf2 = wmalloc(strlen(SPEED_IMAGE_S)+1);
|
||||
for (i = 0; i < 5; i++) {
|
||||
panel->scrB[i] = WMCreateCustomButton(panel->scrF, WBBStateChangeMask);
|
||||
WMResizeWidget(panel->scrB[i], 40, 40);
|
||||
WMMoveWidget(panel->scrB[i], 15+(40*i), 30);
|
||||
WMSetButtonBordered(panel->scrB[i], False);
|
||||
WMSetButtonImagePosition(panel->scrB[i], WIPImageOnly);
|
||||
if (i > 0) {
|
||||
WMGroupButtons(panel->scrB[0], panel->scrB[i]);
|
||||
}
|
||||
sprintf(buf1, SPEED_IMAGE, i);
|
||||
sprintf(buf2, SPEED_IMAGE_S, i);
|
||||
path = LocateImage(buf1);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->scrB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
path = LocateImage(buf2);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonAltImage(panel->scrB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
}
|
||||
free(buf1);
|
||||
free(buf2);
|
||||
|
||||
WMMapSubwidgets(panel->scrF);
|
||||
|
||||
/***************** Submenu Alignment ****************/
|
||||
|
||||
panel->aliF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->aliF, 220, 90);
|
||||
WMMoveWidget(panel->aliF, 280, 20);
|
||||
WMSetFrameTitle(panel->aliF, _("Submenu Alignment"));
|
||||
|
||||
panel->alinB = WMCreateButton(panel->aliF, WBTOnOff);
|
||||
WMResizeWidget(panel->alinB, 48, 48);
|
||||
WMMoveWidget(panel->alinB, 56, 25);
|
||||
WMSetButtonImagePosition(panel->alinB, WIPImageOnly);
|
||||
path = LocateImage(MENU_ALIGN1);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->alinB, icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
panel->aliyB = WMCreateButton(panel->aliF, WBTOnOff);
|
||||
WMResizeWidget(panel->aliyB, 48, 48);
|
||||
WMMoveWidget(panel->aliyB, 120, 25);
|
||||
WMSetButtonImagePosition(panel->aliyB, WIPImageOnly);
|
||||
path = LocateImage(MENU_ALIGN2);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->aliyB, icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
}
|
||||
WMGroupButtons(panel->alinB, panel->aliyB);
|
||||
|
||||
WMMapSubwidgets(panel->aliF);
|
||||
|
||||
/***************** Options ****************/
|
||||
panel->optF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->optF, 475, 80);
|
||||
WMMoveWidget(panel->optF, 25, 130);
|
||||
|
||||
panel->wrapB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->wrapB, 440, 32);
|
||||
WMMoveWidget(panel->wrapB, 25, 8);
|
||||
WMSetButtonText(panel->wrapB, _("Always open submenus inside the screen, instead of scrolling.\nNote: this can be an annoyance at some circumstances."));
|
||||
|
||||
panel->autoB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->autoB, 440, 20);
|
||||
WMMoveWidget(panel->autoB, 25, 45);
|
||||
WMSetButtonText(panel->autoB, _("Scroll off-screen menus when pointer is moved over them."));
|
||||
|
||||
WMMapSubwidgets(panel->optF);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitMenuPreferences(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Menu Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
906
WPrefs.app/MouseSettings.c
Normal file
906
WPrefs.app/MouseSettings.c
Normal file
@@ -0,0 +1,906 @@
|
||||
/* MouseSettings.c- mouse options (some are equivalent to xset)
|
||||
*
|
||||
* WPrefs - WindowMaker 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 <X11/Xutil.h>
|
||||
|
||||
#include <math.h>
|
||||
|
||||
/* double-click tester */
|
||||
#include "double.h"
|
||||
|
||||
|
||||
|
||||
#define XSET "xset"
|
||||
|
||||
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMFrame *speedF;
|
||||
WMLabel *speedL;
|
||||
WMButton *speedB[5];
|
||||
WMLabel *acceL;
|
||||
WMLabel *threL;
|
||||
WMTextField *threT;
|
||||
|
||||
WMFrame *ddelaF;
|
||||
WMButton *ddelaB[5];
|
||||
DoubleTest *tester;
|
||||
|
||||
WMFrame *menuF;
|
||||
WMLabel *listL;
|
||||
WMLabel *appL;
|
||||
WMLabel *selL;
|
||||
WMLabel *mblL;
|
||||
WMLabel *mbmL;
|
||||
WMLabel *mbrL;
|
||||
WMButton *lmb[3];
|
||||
WMButton *amb[3];
|
||||
WMButton *smb[3];
|
||||
|
||||
|
||||
WMButton *disaB;
|
||||
|
||||
WMFrame *grabF;
|
||||
WMPopUpButton *grabP;
|
||||
|
||||
/**/
|
||||
WMButton *lastClickedSpeed;
|
||||
int maxThreshold;
|
||||
float acceleration;
|
||||
} _Panel;
|
||||
|
||||
|
||||
#define ICON_FILE "mousesettings"
|
||||
|
||||
#define SPEED_ICON_FILE "mousespeed"
|
||||
#define SPEED_IMAGE "speed%i"
|
||||
#define SPEED_IMAGE_S "speed%is"
|
||||
|
||||
#define DELAY_ICON "timer%i"
|
||||
#define DELAY_ICON_S "timer%is"
|
||||
|
||||
#define MOUSEB_L "minimouseleft"
|
||||
#define MOUSEB_M "minimousemiddle"
|
||||
#define MOUSEB_R "minimouseright"
|
||||
|
||||
/* need access to the double click variables */
|
||||
#include "WINGsP.h"
|
||||
|
||||
|
||||
|
||||
static char *modifierNames[] = {
|
||||
"Shift",
|
||||
"Lock",
|
||||
"Control",
|
||||
"Mod1",
|
||||
"Mod2",
|
||||
"Mod3",
|
||||
"Mod4",
|
||||
"Mod5"
|
||||
};
|
||||
|
||||
|
||||
#define DELAY(i) ((i)*75+170)
|
||||
|
||||
|
||||
int ModifierFromKey(Display *dpy, char *key);
|
||||
|
||||
|
||||
static void
|
||||
setMouseAccel(WMScreen *scr, float accel, int threshold)
|
||||
{
|
||||
int n, d;
|
||||
|
||||
d = 10;
|
||||
n = accel*d;
|
||||
|
||||
XChangePointerControl(WMScreenDisplay(scr), True, True, n, d, threshold);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
speedClick(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int i;
|
||||
char buffer[64];
|
||||
int threshold;
|
||||
char *tmp;
|
||||
|
||||
for (i=0; i<5; i++) {
|
||||
if (panel->speedB[i]==w)
|
||||
break;
|
||||
}
|
||||
|
||||
panel->lastClickedSpeed = panel->speedB[i];
|
||||
panel->acceleration = 0.5+(i*0.5);
|
||||
|
||||
sprintf(buffer, "Accel.: %.2f", 0.5+(i*0.5));
|
||||
WMSetLabelText(panel->acceL, buffer);
|
||||
|
||||
tmp = WMGetTextFieldText(panel->threT);
|
||||
if (sscanf(tmp, "%i", &threshold)!=1 || threshold < 0
|
||||
|| threshold > panel->maxThreshold) {
|
||||
WMRunAlertPanel(WMWidgetScreen(w), GetWindow(panel), _("Error"),
|
||||
_("Invalid mouse acceleration threshold value. Must be the number of pixels to travel before accelerating."),
|
||||
_("OK"), NULL, NULL);
|
||||
} else {
|
||||
setMouseAccel(WMWidgetScreen(w), 0.5+(i*0.5), threshold);
|
||||
}
|
||||
free(tmp);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
returnPressed(void *observerData, WMNotification *notification)
|
||||
{
|
||||
_Panel *panel = (_Panel*)observerData;
|
||||
|
||||
speedClick(panel->lastClickedSpeed, panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
doubleClick(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int i;
|
||||
extern _WINGsConfiguration WINGsConfiguration;
|
||||
|
||||
for (i=0; i<5; i++) {
|
||||
if (panel->ddelaB[i]==w)
|
||||
break;
|
||||
}
|
||||
WINGsConfiguration.doubleClickDelay = DELAY(i);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
getbutton(char *str)
|
||||
{
|
||||
if (!str)
|
||||
return -2;
|
||||
|
||||
if (strcasecmp(str, "left")==0)
|
||||
return 0;
|
||||
else if (strcasecmp(str, "middle")==0)
|
||||
return 1;
|
||||
else if (strcasecmp(str, "right")==0)
|
||||
return 2;
|
||||
else if (strcasecmp(str, "button1")==0)
|
||||
return 0;
|
||||
else if (strcasecmp(str, "button2")==0)
|
||||
return 1;
|
||||
else if (strcasecmp(str, "button3")==0)
|
||||
return 2;
|
||||
else if (strcasecmp(str, "button4")==0
|
||||
|| strcasecmp(str, "button5")==0) {
|
||||
wwarning(_("mouse button %s not supported by WPrefs."), str);
|
||||
return -2;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
getMouseParameters(Display *dpy, float *accel, int *thre)
|
||||
{
|
||||
int n, d;
|
||||
|
||||
XGetPointerControl(dpy, &n, &d, thre);
|
||||
|
||||
*accel = (float)n/(float)d;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
char *str;
|
||||
int i;
|
||||
int a=-1, b=-1, c=-1;
|
||||
float accel;
|
||||
char buffer[32];
|
||||
Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->win));
|
||||
|
||||
str = GetStringForKey("SelectWindowsMouseButton");
|
||||
i = getbutton(str);
|
||||
if (i==-1) {
|
||||
a = 0;
|
||||
wwarning(_("bad value %s for option %s"),str, "SelectWindowsMouseButton");
|
||||
WMPerformButtonClick(panel->smb[0]);
|
||||
} else if (i>=0) {
|
||||
a = i;
|
||||
WMPerformButtonClick(panel->smb[i]);
|
||||
}
|
||||
|
||||
str = GetStringForKey("WindowListMouseButton");
|
||||
i = getbutton(str);
|
||||
if (i==-1) {
|
||||
b = 0;
|
||||
wwarning(_("bad value %s for option %s"), str, "WindowListMouseButton");
|
||||
WMPerformButtonClick(panel->lmb[1]);
|
||||
} else if (i>=0) {
|
||||
b = i;
|
||||
WMPerformButtonClick(panel->lmb[i]);
|
||||
}
|
||||
|
||||
str = GetStringForKey("ApplicationMenuMouseButton");
|
||||
i = getbutton(str);
|
||||
if (i==-1) {
|
||||
c = 0;
|
||||
wwarning(_("bad value %s for option %s"), str, "ApplicationMenuMouseButton");
|
||||
WMPerformButtonClick(panel->amb[2]);
|
||||
} else if (i>=0) {
|
||||
c = i;
|
||||
WMPerformButtonClick(panel->amb[i]);
|
||||
}
|
||||
|
||||
|
||||
WMSetButtonSelected(panel->disaB, GetBoolForKey("DisableWSMouseActions"));
|
||||
|
||||
/**/
|
||||
getMouseParameters(dpy, &accel, &a);
|
||||
panel->maxThreshold = WidthOfScreen(DefaultScreenOfDisplay(dpy));
|
||||
if (a > panel->maxThreshold) {
|
||||
panel->maxThreshold = a;
|
||||
}
|
||||
sprintf(buffer, "%i", a);
|
||||
WMSetTextFieldText(panel->threT, buffer);
|
||||
/* find best match */
|
||||
a = 0;
|
||||
for (i=0; i<5; i++) {
|
||||
if (fabs((0.5+((float)i*0.5))-accel) < fabs((0.5+((float)a*0.5))-accel))
|
||||
a = i;
|
||||
}
|
||||
WMPerformButtonClick(panel->speedB[a]);
|
||||
panel->lastClickedSpeed = panel->speedB[a];
|
||||
panel->acceleration = accel;
|
||||
|
||||
speedClick(panel->lastClickedSpeed, panel);
|
||||
/**/
|
||||
b = GetIntegerForKey("DoubleClickTime");
|
||||
/* find best match */
|
||||
a = 0;
|
||||
for (i=0; i<5; i++) {
|
||||
if (abs(b - DELAY(i)) < abs(b - DELAY(a)))
|
||||
a = i;
|
||||
}
|
||||
WMPerformButtonClick(panel->ddelaB[a]);
|
||||
|
||||
/**/
|
||||
str = GetStringForKey("ModifierKey");
|
||||
|
||||
a = ModifierFromKey(dpy, str);
|
||||
|
||||
if (a != -1) {
|
||||
str = modifierNames[a];
|
||||
|
||||
a = 0;
|
||||
for (i=0; i<WMGetPopUpButtonNumberOfItems(panel->grabP); i++) {
|
||||
if (strstr(WMGetPopUpButtonItem(panel->grabP, i), str)) {
|
||||
WMSetPopUpButtonSelectedItem(panel->grabP, i);
|
||||
a = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (a < 1) {
|
||||
sscanf(WMGetPopUpButtonItem(panel->grabP, 0), "%s", buffer);
|
||||
WMSetPopUpButtonSelectedItem(panel->grabP, 0);
|
||||
wwarning(_("modifier key %s for option ModifierKey was not recognized. Using %s as default"),
|
||||
str, buffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
fillModifierPopUp(WMPopUpButton *pop)
|
||||
{
|
||||
XModifierKeymap *mapping;
|
||||
Display *dpy = WMScreenDisplay(WMWidgetScreen(pop));
|
||||
int i, j;
|
||||
char *str;
|
||||
char buffer[64];
|
||||
|
||||
|
||||
mapping = XGetModifierMapping(dpy);
|
||||
|
||||
if (!mapping || mapping->max_keypermod==0) {
|
||||
WMAddPopUpButtonItem(pop, "Mod1");
|
||||
WMAddPopUpButtonItem(pop, "Mod2");
|
||||
WMAddPopUpButtonItem(pop, "Mod3");
|
||||
WMAddPopUpButtonItem(pop, "Mod4");
|
||||
WMAddPopUpButtonItem(pop, "Mod5");
|
||||
wwarning(_("could not retrieve keyboard modifier mapping"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
for (j=0; j<8; j++) {
|
||||
int idx;
|
||||
char *array[8];
|
||||
int a;
|
||||
KeySym ksym;
|
||||
int k;
|
||||
char *ptr;
|
||||
char *tmp;
|
||||
|
||||
a = 0;
|
||||
memset(array, 0, sizeof(char*)*8);
|
||||
for (i=0; i < mapping->max_keypermod; i++) {
|
||||
idx = i+j*mapping->max_keypermod;
|
||||
if (mapping->modifiermap[idx]!=0) {
|
||||
int l;
|
||||
for (l=0; l<4; l++) {
|
||||
ksym = XKeycodeToKeysym(dpy, mapping->modifiermap[idx], l);
|
||||
if (ksym!=NoSymbol)
|
||||
break;
|
||||
}
|
||||
if (ksym!=NoSymbol)
|
||||
str = XKeysymToString(ksym);
|
||||
else
|
||||
str = NULL;
|
||||
if (str && !strstr(str, "_Lock") && !strstr(str, "Shift")
|
||||
&& !strstr(str, "Control")) {
|
||||
array[a++] = wstrdup(str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (k=0; k<a; k++) {
|
||||
if (array[k]==NULL)
|
||||
continue;
|
||||
tmp = wstrdup(array[k]);
|
||||
ptr = strstr(tmp, "_L");
|
||||
if (ptr)
|
||||
*ptr = 0;
|
||||
ptr = strstr(tmp, "_R");
|
||||
if (ptr)
|
||||
*ptr = 0;
|
||||
sprintf(buffer, "%s (%s)", modifierNames[j], tmp);
|
||||
WMAddPopUpButtonItem(pop, buffer);
|
||||
for (i=k+1; i<a; i++) {
|
||||
if (strstr(array[i], tmp)) {
|
||||
free(array[i]);
|
||||
array[i]=NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
free(tmp);
|
||||
}
|
||||
|
||||
while (--a>0) {
|
||||
if (array[a])
|
||||
free(array[a]);
|
||||
}
|
||||
}
|
||||
|
||||
if (mapping)
|
||||
XFreeModifiermap(mapping);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
mouseButtonClickA(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int i;
|
||||
|
||||
for (i=0; i<3; i++) {
|
||||
if (panel->amb[i]==w)
|
||||
break;
|
||||
}
|
||||
if (i==3)
|
||||
return;
|
||||
if (WMGetButtonSelected(panel->lmb[i]))
|
||||
WMSetButtonSelected(panel->lmb[i], False);
|
||||
if (WMGetButtonSelected(panel->smb[i]))
|
||||
WMSetButtonSelected(panel->smb[i], False);
|
||||
}
|
||||
|
||||
static void
|
||||
mouseButtonClickL(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int i;
|
||||
|
||||
for (i=0; i<3; i++) {
|
||||
if (panel->lmb[i]==w)
|
||||
break;
|
||||
}
|
||||
if (i==3)
|
||||
return;
|
||||
if (WMGetButtonSelected(panel->smb[i]))
|
||||
WMSetButtonSelected(panel->smb[i], False);
|
||||
if (WMGetButtonSelected(panel->amb[i]))
|
||||
WMSetButtonSelected(panel->amb[i], False);
|
||||
}
|
||||
|
||||
static void
|
||||
mouseButtonClickS(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int i;
|
||||
|
||||
for (i=0; i<3; i++) {
|
||||
if (panel->smb[i]==w)
|
||||
break;
|
||||
}
|
||||
if (i==3)
|
||||
return;
|
||||
if (WMGetButtonSelected(panel->lmb[i]))
|
||||
WMSetButtonSelected(panel->lmb[i], False);
|
||||
if (WMGetButtonSelected(panel->amb[i]))
|
||||
WMSetButtonSelected(panel->amb[i], False);
|
||||
}
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
WMPixmap *icon;
|
||||
char *buf1, *buf2;
|
||||
int i;
|
||||
RColor color;
|
||||
char *path;
|
||||
|
||||
color.red = 0xaa;
|
||||
color.green = 0xae;
|
||||
color.blue = 0xaa;
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
/**************** Mouse Speed ****************/
|
||||
panel->speedF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->speedF, 245, 100);
|
||||
WMMoveWidget(panel->speedF, 15, 15);
|
||||
WMSetFrameTitle(panel->speedF, _("Mouse Speed"));
|
||||
|
||||
panel->speedL = WMCreateLabel(panel->speedF);
|
||||
WMResizeWidget(panel->speedL, 40, 46);
|
||||
WMMoveWidget(panel->speedL, 15, 14);
|
||||
WMSetLabelImagePosition(panel->speedL, WIPImageOnly);
|
||||
path = LocateImage(SPEED_ICON_FILE);
|
||||
if (path) {
|
||||
icon = WMCreateBlendedPixmapFromFile(scr, path, &color);
|
||||
if (icon) {
|
||||
WMSetLabelImage(panel->speedL, icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
buf1 = wmalloc(strlen(SPEED_IMAGE)+1);
|
||||
buf2 = wmalloc(strlen(SPEED_IMAGE_S)+1);
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
panel->speedB[i] = WMCreateCustomButton(panel->speedF,
|
||||
WBBStateChangeMask);
|
||||
WMResizeWidget(panel->speedB[i], 26, 26);
|
||||
WMMoveWidget(panel->speedB[i], 60+(35*i), 25);
|
||||
WMSetButtonBordered(panel->speedB[i], False);
|
||||
WMSetButtonImagePosition(panel->speedB[i], WIPImageOnly);
|
||||
WMSetButtonAction(panel->speedB[i], speedClick, panel);
|
||||
if (i > 0) {
|
||||
WMGroupButtons(panel->speedB[0], panel->speedB[i]);
|
||||
}
|
||||
sprintf(buf1, SPEED_IMAGE, i);
|
||||
sprintf(buf2, SPEED_IMAGE_S, i);
|
||||
path = LocateImage(buf1);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->speedB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
path = LocateImage(buf2);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonAltImage(panel->speedB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
}
|
||||
}
|
||||
free(buf1);
|
||||
free(buf2);
|
||||
|
||||
panel->acceL = WMCreateLabel(panel->speedF);
|
||||
WMResizeWidget(panel->acceL, 100, 16);
|
||||
WMMoveWidget(panel->acceL, 10, 67);
|
||||
|
||||
|
||||
panel->threL = WMCreateLabel(panel->speedF);
|
||||
WMResizeWidget(panel->threL, 80, 16);
|
||||
WMMoveWidget(panel->threL, 120, 67);
|
||||
WMSetLabelText(panel->threL, _("Threshold:"));
|
||||
|
||||
panel->threT = WMCreateTextField(panel->speedF);
|
||||
WMResizeWidget(panel->threT, 40, 20);
|
||||
WMMoveWidget(panel->threT, 190, 65);
|
||||
WMAddNotificationObserver(returnPressed, panel,
|
||||
WMTextDidEndEditingNotification, panel->threT);
|
||||
|
||||
WMMapSubwidgets(panel->speedF);
|
||||
|
||||
/***************** Doubleclick Delay ****************/
|
||||
|
||||
panel->ddelaF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->ddelaF, 245, 95);
|
||||
WMMoveWidget(panel->ddelaF, 15, 125);
|
||||
WMSetFrameTitle(panel->ddelaF, _("Double-Click Delay"));
|
||||
|
||||
buf1 = wmalloc(strlen(DELAY_ICON)+1);
|
||||
buf2 = wmalloc(strlen(DELAY_ICON_S)+1);
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
panel->ddelaB[i] = WMCreateCustomButton(panel->ddelaF,
|
||||
WBBStateChangeMask);
|
||||
WMResizeWidget(panel->ddelaB[i], 25, 25);
|
||||
WMMoveWidget(panel->ddelaB[i], 30+(40*i), 20);
|
||||
WMSetButtonBordered(panel->ddelaB[i], False);
|
||||
WMSetButtonImagePosition(panel->ddelaB[i], WIPImageOnly);
|
||||
WMSetButtonAction(panel->ddelaB[i], doubleClick, panel);
|
||||
if (i>0) {
|
||||
WMGroupButtons(panel->ddelaB[0], panel->ddelaB[i]);
|
||||
}
|
||||
sprintf(buf1, DELAY_ICON, i+1);
|
||||
sprintf(buf2, DELAY_ICON_S, i+1);
|
||||
path = LocateImage(buf1);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonImage(panel->ddelaB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
path = LocateImage(buf2);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetButtonAltImage(panel->ddelaB[i], icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
}
|
||||
free(buf1);
|
||||
free(buf2);
|
||||
|
||||
panel->tester = CreateDoubleTest(panel->ddelaF, _("Test"));
|
||||
WMResizeWidget(panel->tester, 84, 29);
|
||||
WMMoveWidget(panel->tester, 85, 55);
|
||||
|
||||
WMMapSubwidgets(panel->ddelaF);
|
||||
|
||||
/* ************** Workspace Action Buttons **************** */
|
||||
panel->menuF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->menuF, 240, 145);
|
||||
WMMoveWidget(panel->menuF, 270, 15);
|
||||
WMSetFrameTitle(panel->menuF, _("Workspace Mouse Actions"));
|
||||
|
||||
panel->disaB = WMCreateSwitchButton(panel->menuF);
|
||||
WMResizeWidget(panel->disaB, 185, 19);
|
||||
WMMoveWidget(panel->disaB, 20, 20);
|
||||
WMSetButtonText(panel->disaB, _("Disable mouse actions"));
|
||||
|
||||
panel->mblL = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->mblL, 16, 22);
|
||||
WMMoveWidget(panel->mblL, 135, 40);
|
||||
WMSetLabelImagePosition(panel->mblL, WIPImageOnly);
|
||||
path = LocateImage(MOUSEB_L);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetLabelImage(panel->mblL, icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
panel->mbmL = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->mbmL, 16, 22);
|
||||
WMMoveWidget(panel->mbmL, 170, 40);
|
||||
WMSetLabelImagePosition(panel->mbmL, WIPImageOnly);
|
||||
path = LocateImage(MOUSEB_M);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetLabelImage(panel->mbmL, icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
panel->mbrL = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->mbrL, 16, 22);
|
||||
WMMoveWidget(panel->mbrL, 205, 40);
|
||||
WMSetLabelImagePosition(panel->mbrL, WIPImageOnly);
|
||||
path = LocateImage(MOUSEB_R);
|
||||
if (path) {
|
||||
icon = WMCreatePixmapFromFile(scr, path);
|
||||
if (icon) {
|
||||
WMSetLabelImage(panel->mbrL, icon);
|
||||
WMReleasePixmap(icon);
|
||||
} else {
|
||||
wwarning(_("could not load icon file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
panel->appL = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->appL, 125, 16);
|
||||
WMMoveWidget(panel->appL, 5, 65);
|
||||
WMSetLabelTextAlignment(panel->appL, WARight);
|
||||
WMSetLabelText(panel->appL, _("Applications menu"));
|
||||
|
||||
panel->listL = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->listL, 125, 16);
|
||||
WMMoveWidget(panel->listL, 5, 90);
|
||||
WMSetLabelTextAlignment(panel->listL, WARight);
|
||||
WMSetLabelText(panel->listL, _("Window list menu"));
|
||||
|
||||
panel->selL = WMCreateLabel(panel->menuF);
|
||||
WMResizeWidget(panel->selL, 125, 16);
|
||||
WMMoveWidget(panel->selL, 5, 115);
|
||||
WMSetLabelTextAlignment(panel->selL, WARight);
|
||||
WMSetLabelText(panel->selL, _("Select windows"));
|
||||
|
||||
|
||||
for (i=0; i<3; i++) {
|
||||
panel->amb[i] = WMCreateRadioButton(panel->menuF);
|
||||
WMResizeWidget(panel->amb[i], 24, 24);
|
||||
WMMoveWidget(panel->amb[i], 135+35*i, 65);
|
||||
WMSetButtonText(panel->amb[i], NULL);
|
||||
WMSetButtonAction(panel->amb[i], mouseButtonClickA, panel);
|
||||
|
||||
panel->lmb[i] = WMCreateRadioButton(panel->menuF);
|
||||
WMResizeWidget(panel->lmb[i], 24, 24);
|
||||
WMMoveWidget(panel->lmb[i], 135+35*i, 90);
|
||||
WMSetButtonText(panel->lmb[i], NULL);
|
||||
WMSetButtonAction(panel->lmb[i], mouseButtonClickL, panel);
|
||||
|
||||
panel->smb[i] = WMCreateRadioButton(panel->menuF);
|
||||
WMResizeWidget(panel->smb[i], 24, 24);
|
||||
WMMoveWidget(panel->smb[i], 135+35*i, 115);
|
||||
WMSetButtonText(panel->smb[i], NULL);
|
||||
WMSetButtonAction(panel->smb[i], mouseButtonClickS, panel);
|
||||
|
||||
if (i>0) {
|
||||
WMGroupButtons(panel->lmb[0], panel->lmb[i]);
|
||||
WMGroupButtons(panel->amb[0], panel->amb[i]);
|
||||
WMGroupButtons(panel->smb[0], panel->smb[i]);
|
||||
}
|
||||
}
|
||||
|
||||
WMMapSubwidgets(panel->menuF);
|
||||
|
||||
/* ************** Grab Modifier **************** */
|
||||
panel->grabF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->grabF, 240, 55);
|
||||
WMMoveWidget(panel->grabF, 270, 165);
|
||||
WMSetFrameTitle(panel->grabF, _("Mouse Grab Modifier"));
|
||||
|
||||
panel->grabP = WMCreatePopUpButton(panel->grabF);
|
||||
WMResizeWidget(panel->grabP, 120, 20);
|
||||
WMMoveWidget(panel->grabP, 60, 25);
|
||||
|
||||
fillModifierPopUp(panel->grabP);
|
||||
|
||||
WMMapSubwidgets(panel->grabF);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeCommandInScript(char *cmd, char *line)
|
||||
{
|
||||
char *path;
|
||||
char *p;
|
||||
FILE *f;
|
||||
char buffer[128];
|
||||
|
||||
p = wusergnusteppath();
|
||||
path = wmalloc(strlen(p)+64);
|
||||
sprintf(path, "%s/Library/WindowMaker/autostart", p);
|
||||
|
||||
f = fopen(path, "r");
|
||||
if (!f) {
|
||||
f = fopen(path, "w");
|
||||
if (!f) {
|
||||
wsyserror(_("could not create %s"), path);
|
||||
goto end;
|
||||
}
|
||||
fprintf(f, "#!/bin/sh\n");
|
||||
fputs(line, f);
|
||||
fputs("\n", f);
|
||||
} else {
|
||||
int len = strlen(cmd);
|
||||
int ok = 0;
|
||||
char *tmppath;
|
||||
FILE *fo;
|
||||
|
||||
tmppath = wmalloc(strlen(p)+64);
|
||||
sprintf(tmppath, "%s/Library/WindowMaker/autostart.tmp", p);
|
||||
fo = fopen(tmppath, "w");
|
||||
if (!fo) {
|
||||
wsyserror(_("could not create temporary file %s"), tmppath);
|
||||
goto end;
|
||||
}
|
||||
|
||||
while (!feof(f)) {
|
||||
if (!fgets(buffer, 127, f)) {
|
||||
break;
|
||||
}
|
||||
if (strncmp(buffer, cmd, len)==0) {
|
||||
if (!ok) {
|
||||
fputs(line, fo);
|
||||
fputs("\n", fo);
|
||||
ok = 1;
|
||||
}
|
||||
} else {
|
||||
fputs(buffer, fo);
|
||||
}
|
||||
}
|
||||
if (!ok) {
|
||||
fputs(line, fo);
|
||||
fputs("\n", fo);
|
||||
}
|
||||
fclose(fo);
|
||||
|
||||
if (rename(tmppath, path)!=0) {
|
||||
wsyserror(_("could not rename file %s to %s\n"), tmppath, path);
|
||||
}
|
||||
free(tmppath);
|
||||
}
|
||||
sprintf(buffer, "chmod u+x %s", path);
|
||||
system(buffer);
|
||||
|
||||
end:
|
||||
free(p);
|
||||
free(path);
|
||||
if (f)
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
char buffer[64];
|
||||
int i;
|
||||
char *tmp, *p;
|
||||
static char *button[3] = {"left", "middle", "right"};
|
||||
|
||||
tmp = WMGetTextFieldText(panel->threT);
|
||||
if (strlen(tmp)==0) {
|
||||
free(tmp);
|
||||
tmp = wstrdup("0");
|
||||
}
|
||||
|
||||
sprintf(buffer, XSET" m %i/%i %s\n", (int)(panel->acceleration*10),10, tmp);
|
||||
storeCommandInScript(XSET" m", buffer);
|
||||
|
||||
free(tmp);
|
||||
|
||||
for (i=0; i<5; i++) {
|
||||
if (WMGetButtonSelected(panel->ddelaB[i]))
|
||||
break;
|
||||
}
|
||||
SetIntegerForKey(DELAY(i), "DoubleClickTime");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->disaB), "DisableWSMouseActions");
|
||||
|
||||
for (i=0; i<3; i++) {
|
||||
if (WMGetButtonSelected(panel->amb[i]))
|
||||
break;
|
||||
}
|
||||
if (i<3)
|
||||
SetStringForKey(button[i], "ApplicationMenuMouseButton");
|
||||
|
||||
for (i=0; i<3; i++) {
|
||||
if (WMGetButtonSelected(panel->lmb[i]))
|
||||
break;
|
||||
}
|
||||
if (i<3)
|
||||
SetStringForKey(button[i], "WindowListMouseButton");
|
||||
|
||||
for (i=0; i<3; i++) {
|
||||
if (WMGetButtonSelected(panel->smb[i]))
|
||||
break;
|
||||
}
|
||||
if (i<3)
|
||||
SetStringForKey(button[i], "SelectWindowsMouseButton");
|
||||
|
||||
tmp = WMGetPopUpButtonItem(panel->grabP,
|
||||
WMGetPopUpButtonSelectedItem(panel->grabP));
|
||||
tmp = wstrdup(tmp);
|
||||
p = strchr(tmp, ' ');
|
||||
*p = 0;
|
||||
|
||||
SetStringForKey(tmp, "ModifierKey");
|
||||
|
||||
free(tmp);
|
||||
}
|
||||
|
||||
|
||||
Panel*
|
||||
InitMouseSettings(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Mouse Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
395
WPrefs.app/Paths.c
Normal file
395
WPrefs.app/Paths.c
Normal file
@@ -0,0 +1,395 @@
|
||||
/* Paths.c- pixmap/icon paths
|
||||
*
|
||||
* WPrefs - WindowMaker 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;
|
||||
|
||||
WMFrame *pixF;
|
||||
WMList *pixL;
|
||||
WMButton *pixaB;
|
||||
WMButton *pixrB;
|
||||
WMTextField *pixT;
|
||||
|
||||
WMFrame *icoF;
|
||||
WMList *icoL;
|
||||
WMButton *icoaB;
|
||||
WMButton *icorB;
|
||||
WMTextField *icoT;
|
||||
|
||||
WMColor *red;
|
||||
WMColor *black;
|
||||
WMColor *white;
|
||||
WMFont *font;
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "paths"
|
||||
|
||||
|
||||
static void
|
||||
addPathToList(WMList *list, int index, char *path)
|
||||
{
|
||||
char *fpath = wexpandpath(path);
|
||||
WMListItem *item;
|
||||
|
||||
item = WMInsertListItem(list, index, path);
|
||||
|
||||
if (access(fpath, X_OK)!=0) {
|
||||
item->uflags = 1;
|
||||
}
|
||||
free(fpath);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
proplist_t array, val;
|
||||
int i;
|
||||
|
||||
array = GetObjectForKey("IconPath");
|
||||
if (!array || !PLIsArray(array)) {
|
||||
if (array)
|
||||
wwarning(_("bad value in option IconPath. Using default path list"));
|
||||
addPathToList(panel->icoL, -1, "~/pixmaps");
|
||||
addPathToList(panel->icoL, -1, "~/GNUstep/Library/Icons");
|
||||
addPathToList(panel->icoL, -1, "/usr/include/X11/pixmaps");
|
||||
addPathToList(panel->icoL, -1, "/usr/local/share/WindowMaker/Icons");
|
||||
addPathToList(panel->icoL, -1, "/usr/local/share/WindowMaker/Pixmaps");
|
||||
addPathToList(panel->icoL, -1, "/usr/share/WindowMaker/Icons");
|
||||
} else {
|
||||
for (i=0; i<PLGetNumberOfElements(array); i++) {
|
||||
val = PLGetArrayElement(array, i);
|
||||
addPathToList(panel->icoL, -1, PLGetString(val));
|
||||
}
|
||||
}
|
||||
|
||||
array = GetObjectForKey("PixmapPath");
|
||||
if (!array || !PLIsArray(array)) {
|
||||
if (array)
|
||||
wwarning(_("bad value in option PixmapPath. Using default path list"));
|
||||
addPathToList(panel->pixL, -1, "~/pixmaps");
|
||||
addPathToList(panel->pixL, -1, "~/GNUstep/Library/WindowMaker/Pixmaps");
|
||||
addPathToList(panel->pixL, -1, "/usr/local/share/WindowMaker/Pixmaps");
|
||||
} else {
|
||||
for (i=0; i<PLGetNumberOfElements(array); i++) {
|
||||
val = PLGetArrayElement(array, i);
|
||||
addPathToList(panel->pixL, -1, PLGetString(val));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
pushButton(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int i;
|
||||
|
||||
/* icon paths */
|
||||
if (w == panel->icoaB) {
|
||||
char *text = WMGetTextFieldText(panel->icoT);
|
||||
|
||||
if (text && strlen(text) > 0) {
|
||||
i = WMGetListSelectedItemRow(panel->icoL);
|
||||
if (i >= 0) i++;
|
||||
addPathToList(panel->icoL, i, text);
|
||||
WMSetListBottomPosition(panel->icoL,
|
||||
WMGetListNumberOfRows(panel->icoL));
|
||||
}
|
||||
if (text)
|
||||
free(text);
|
||||
|
||||
WMSetTextFieldText(panel->icoT, NULL);
|
||||
} else if (w == panel->icorB) {
|
||||
i = WMGetListSelectedItemRow(panel->icoL);
|
||||
|
||||
if (i>=0)
|
||||
WMRemoveListItem(panel->icoL, i);
|
||||
}
|
||||
|
||||
/* pixmap paths */
|
||||
if (w == panel->pixaB) {
|
||||
char *text = WMGetTextFieldText(panel->pixT);
|
||||
|
||||
if (text && strlen(text) > 0) {
|
||||
i = WMGetListSelectedItemRow(panel->pixL);
|
||||
if (i >= 0) i++;
|
||||
addPathToList(panel->pixL, i, text);
|
||||
WMSetListBottomPosition(panel->pixL,
|
||||
WMGetListNumberOfRows(panel->pixL));
|
||||
}
|
||||
if (text)
|
||||
free(text);
|
||||
WMSetTextFieldText(panel->pixT, NULL);
|
||||
} else if (w == panel->pixrB) {
|
||||
i = WMGetListSelectedItemRow(panel->pixL);
|
||||
|
||||
if (i>=0)
|
||||
WMRemoveListItem(panel->pixL, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
textEditedObserver(void *observerData, WMNotification *notification)
|
||||
{
|
||||
_Panel *panel = (_Panel*)observerData;
|
||||
|
||||
switch ((int)WMGetNotificationClientData(notification)) {
|
||||
case WMReturnTextMovement:
|
||||
if (WMGetNotificationObject(notification) == panel->icoT)
|
||||
WMPerformButtonClick(panel->icoaB);
|
||||
else
|
||||
WMPerformButtonClick(panel->pixaB);
|
||||
break;
|
||||
|
||||
case WMIllegalTextMovement:
|
||||
if (WMGetNotificationObject(notification) == panel->icoT) {
|
||||
WMSetButtonImage(panel->icoaB, NULL);
|
||||
WMSetButtonImage(panel->icoaB, NULL);
|
||||
} else {
|
||||
WMSetButtonImage(panel->pixaB, NULL);
|
||||
WMSetButtonImage(panel->pixaB, NULL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
textBeginObserver(void *observerData, WMNotification *notification)
|
||||
{
|
||||
_Panel *panel = (_Panel*)observerData;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
WMPixmap *arrow1 = WMGetSystemPixmap(scr, WSIReturnArrow);
|
||||
WMPixmap *arrow2 = WMGetSystemPixmap(scr, WSIHighlightedReturnArrow);
|
||||
|
||||
if (WMGetNotificationObject(notification)==panel->icoT) {
|
||||
WMSetButtonImage(panel->icoaB, arrow1);
|
||||
WMSetButtonAltImage(panel->icoaB, arrow2);
|
||||
} else {
|
||||
WMSetButtonImage(panel->pixaB, arrow1);
|
||||
WMSetButtonAltImage(panel->pixaB, arrow2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
listClick(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
char *t;
|
||||
|
||||
if (w == panel->icoL) {
|
||||
t = WMGetListSelectedItem(panel->icoL)->text;
|
||||
WMSetTextFieldText(panel->icoT, t);
|
||||
} else {
|
||||
t = WMGetListSelectedItem(panel->pixL)->text;
|
||||
WMSetTextFieldText(panel->pixT, t);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
paintItem(WMList *lPtr, 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 (state & 1) {
|
||||
WMDrawString(scr, d, WMColorGC(panel->red), panel->font, x+4, y,
|
||||
text, strlen(text));
|
||||
} else {
|
||||
WMDrawString(scr, d, WMColorGC(panel->black), panel->font, x+4, y,
|
||||
text, strlen(text));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
proplist_t list;
|
||||
proplist_t tmp;
|
||||
int i;
|
||||
char *p;
|
||||
|
||||
list = PLMakeArrayFromElements(NULL, NULL);
|
||||
for (i=0; i<WMGetListNumberOfRows(panel->icoL); i++) {
|
||||
p = WMGetListItem(panel->icoL, i)->text;
|
||||
tmp = PLMakeString(p);
|
||||
PLAppendArrayElement(list, tmp);
|
||||
}
|
||||
SetObjectForKey(list, "IconPath");
|
||||
|
||||
list = PLMakeArrayFromElements(NULL, NULL);
|
||||
for (i=0; i<WMGetListNumberOfRows(panel->pixL); i++) {
|
||||
p = WMGetListItem(panel->pixL, i)->text;
|
||||
tmp = PLMakeString(p);
|
||||
PLAppendArrayElement(list, tmp);
|
||||
}
|
||||
SetObjectForKey(list, "PixmapPath");
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
|
||||
panel->white = WMWhiteColor(scr);
|
||||
panel->black = WMBlackColor(scr);
|
||||
panel->red = WMCreateRGBColor(scr, 0xffff, 0, 0, True);
|
||||
panel->font = WMSystemFontOfSize(scr, 12);
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
/* icon path */
|
||||
panel->icoF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->icoF, 230, 210);
|
||||
WMMoveWidget(panel->icoF, 25, 10);
|
||||
WMSetFrameTitle(panel->icoF, _("Icon Search Paths"));
|
||||
|
||||
panel->icoL = WMCreateList(panel->icoF);
|
||||
WMResizeWidget(panel->icoL, 200, 120);
|
||||
WMMoveWidget(panel->icoL, 15, 20);
|
||||
WMSetListAction(panel->icoL, listClick, panel);
|
||||
WMSetListUserDrawProc(panel->icoL, paintItem);
|
||||
WMHangData(panel->icoL, panel);
|
||||
|
||||
panel->icoaB = WMCreateCommandButton(panel->icoF);
|
||||
WMResizeWidget(panel->icoaB, 90, 24);
|
||||
WMMoveWidget(panel->icoaB, 125, 145);
|
||||
WMSetButtonText(panel->icoaB, _("Add"));
|
||||
WMSetButtonAction(panel->icoaB, pushButton, panel);
|
||||
WMSetButtonImagePosition(panel->icoaB, WIPRight);
|
||||
|
||||
panel->icorB = WMCreateCommandButton(panel->icoF);
|
||||
WMResizeWidget(panel->icorB, 90, 24);
|
||||
WMMoveWidget(panel->icorB, 15, 145);
|
||||
WMSetButtonText(panel->icorB, _("Remove"));
|
||||
WMSetButtonAction(panel->icorB, pushButton, panel);
|
||||
|
||||
panel->icoT = WMCreateTextField(panel->icoF);
|
||||
WMResizeWidget(panel->icoT, 200, 20);
|
||||
WMMoveWidget(panel->icoT, 15, 175);
|
||||
WMAddNotificationObserver(textEditedObserver, panel,
|
||||
WMTextDidEndEditingNotification, panel->icoT);
|
||||
WMAddNotificationObserver(textBeginObserver, panel,
|
||||
WMTextDidBeginEditingNotification, panel->icoT);
|
||||
|
||||
WMMapSubwidgets(panel->icoF);
|
||||
|
||||
/* pixmap path */
|
||||
panel->pixF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->pixF, 230, 210);
|
||||
WMMoveWidget(panel->pixF, 270, 10);
|
||||
WMSetFrameTitle(panel->pixF, _("Pixmap Search Paths"));
|
||||
|
||||
panel->pixL = WMCreateList(panel->pixF);
|
||||
WMResizeWidget(panel->pixL, 200, 120);
|
||||
WMMoveWidget(panel->pixL, 15, 20);
|
||||
WMSetListAction(panel->pixL, listClick, panel);
|
||||
WMSetListUserDrawProc(panel->pixL, paintItem);
|
||||
WMHangData(panel->pixL, panel);
|
||||
|
||||
panel->pixaB = WMCreateCommandButton(panel->pixF);
|
||||
WMResizeWidget(panel->pixaB, 90, 24);
|
||||
WMMoveWidget(panel->pixaB, 125, 145);
|
||||
WMSetButtonText(panel->pixaB, _("Add"));
|
||||
WMSetButtonAction(panel->pixaB, pushButton, panel);
|
||||
WMSetButtonImagePosition(panel->pixaB, WIPRight);
|
||||
|
||||
panel->pixrB = WMCreateCommandButton(panel->pixF);
|
||||
WMResizeWidget(panel->pixrB, 90, 24);
|
||||
WMMoveWidget(panel->pixrB, 15, 145);
|
||||
WMSetButtonText(panel->pixrB, _("Remove"));
|
||||
WMSetButtonAction(panel->pixrB, pushButton, panel);
|
||||
|
||||
panel->pixT= WMCreateTextField(panel->pixF);
|
||||
WMResizeWidget(panel->pixT, 200, 20);
|
||||
WMMoveWidget(panel->pixT, 15, 175);
|
||||
WMAddNotificationObserver(textEditedObserver, panel,
|
||||
WMTextDidEndEditingNotification, panel->pixT);
|
||||
WMAddNotificationObserver(textBeginObserver, panel,
|
||||
WMTextDidBeginEditingNotification, panel->pixT);
|
||||
|
||||
WMMapSubwidgets(panel->pixF);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitPaths(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Search Path Configuration");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
225
WPrefs.app/Preferences.c
Normal file
225
WPrefs.app/Preferences.c
Normal file
@@ -0,0 +1,225 @@
|
||||
/* Preferences.c- misc personal preferences
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMFrame *sizeF;
|
||||
WMPopUpButton *sizeP;
|
||||
|
||||
WMFrame *posiF;
|
||||
WMPopUpButton *posiP;
|
||||
|
||||
WMFrame *ballF;
|
||||
WMButton *ballB[4];
|
||||
|
||||
WMFrame *optF;
|
||||
WMButton *raisB;
|
||||
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "ergonomic"
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
char *str;
|
||||
|
||||
str = GetStringForKey("ResizeDisplay");
|
||||
if (strcasecmp(str, "corner")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, 0);
|
||||
else if (strcasecmp(str, "center")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, 1);
|
||||
else if (strcasecmp(str, "floating")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, 2);
|
||||
else if (strcasecmp(str, "line")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->sizeP, 3);
|
||||
|
||||
str = GetStringForKey("MoveDisplay");
|
||||
if (strcasecmp(str, "corner")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->posiP, 0);
|
||||
else if (strcasecmp(str, "center")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->posiP, 1);
|
||||
else if (strcasecmp(str, "floating")==0)
|
||||
WMSetPopUpButtonSelectedItem(panel->posiP, 2);
|
||||
|
||||
|
||||
WMSetButtonSelected(panel->raisB, GetBoolForKey("CirculateRaise"));
|
||||
|
||||
WMSetButtonSelected(panel->ballB[0], GetBoolForKey("WindowTitleBalloons"));
|
||||
WMSetButtonSelected(panel->ballB[1], GetBoolForKey("MiniwindowTitleBalloons"));
|
||||
WMSetButtonSelected(panel->ballB[2], GetBoolForKey("AppIconBalloons"));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
char *str;
|
||||
|
||||
switch (WMGetPopUpButtonSelectedItem(panel->sizeP)) {
|
||||
case 0:
|
||||
str = "corner";
|
||||
break;
|
||||
case 1:
|
||||
str = "center";
|
||||
break;
|
||||
case 2:
|
||||
str = "floating";
|
||||
break;
|
||||
default:
|
||||
str = "line";
|
||||
break;
|
||||
}
|
||||
SetStringForKey(str, "ResizeDisplay");
|
||||
|
||||
switch (WMGetPopUpButtonSelectedItem(panel->posiP)) {
|
||||
case 0:
|
||||
str = "corner";
|
||||
break;
|
||||
case 1:
|
||||
str = "center";
|
||||
break;
|
||||
default:
|
||||
str = "floating";
|
||||
break;
|
||||
}
|
||||
SetStringForKey(str, "MoveDisplay");
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->raisB), "CirculateRaise");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->ballB[0]), "WindowTitleBalloons");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->ballB[1]), "MiniwindowTitleBalloons");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->ballB[2]), "AppIconBalloons");
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
int i;
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
|
||||
/***************** Size Display ****************/
|
||||
panel->sizeF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->sizeF, 240, 60);
|
||||
WMMoveWidget(panel->sizeF, 20, 10);
|
||||
WMSetFrameTitle(panel->sizeF, _("Size Display"));
|
||||
|
||||
panel->sizeP = WMCreatePopUpButton(panel->sizeF);
|
||||
WMResizeWidget(panel->sizeP, 180, 20);
|
||||
WMMoveWidget(panel->sizeP, 32, 24);
|
||||
WMAddPopUpButtonItem(panel->sizeP, _("Corner of screen"));
|
||||
WMAddPopUpButtonItem(panel->sizeP, _("Center of screen"));
|
||||
WMAddPopUpButtonItem(panel->sizeP, _("Center of resized window"));
|
||||
WMAddPopUpButtonItem(panel->sizeP, _("Technical drawing-like"));
|
||||
|
||||
WMMapSubwidgets(panel->sizeF);
|
||||
|
||||
/***************** Position Display ****************/
|
||||
panel->posiF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->posiF, 240, 60);
|
||||
WMMoveWidget(panel->posiF, 20, 75);
|
||||
WMSetFrameTitle(panel->posiF, _("Position Display"));
|
||||
|
||||
panel->posiP = WMCreatePopUpButton(panel->posiF);
|
||||
WMResizeWidget(panel->posiP, 180, 20);
|
||||
WMMoveWidget(panel->posiP, 32, 24);
|
||||
WMAddPopUpButtonItem(panel->posiP, _("Corner of screen"));
|
||||
WMAddPopUpButtonItem(panel->posiP, _("Center of screen"));
|
||||
WMAddPopUpButtonItem(panel->posiP, _("Center of resized window"));
|
||||
|
||||
WMMapSubwidgets(panel->posiF);
|
||||
|
||||
/***************** Balloon Text ****************/
|
||||
panel->ballF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->ballF, 235, 125);
|
||||
WMMoveWidget(panel->ballF, 270, 10);
|
||||
WMSetFrameTitle(panel->ballF, _("Show balloon text for..."));
|
||||
|
||||
for (i=0; i<3; i++) {
|
||||
panel->ballB[i] = WMCreateSwitchButton(panel->ballF);
|
||||
WMResizeWidget(panel->ballB[i], 205, 20);
|
||||
WMMoveWidget(panel->ballB[i], 15, 25+i*30);
|
||||
}
|
||||
WMSetButtonText(panel->ballB[0], _("incomplete window titles"));
|
||||
WMSetButtonText(panel->ballB[1], _("miniwindow titles"));
|
||||
WMSetButtonText(panel->ballB[2], _("application/dock icons"));
|
||||
/* WMSetButtonText(panel->ballB[3], "help");*/
|
||||
|
||||
WMMapSubwidgets(panel->ballF);
|
||||
|
||||
/***************** Options ****************/
|
||||
panel->optF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->optF, 485, 75);
|
||||
WMMoveWidget(panel->optF, 20, 145);
|
||||
|
||||
panel->raisB = WMCreateSwitchButton(panel->optF);
|
||||
WMResizeWidget(panel->raisB, 440, 20);
|
||||
WMMoveWidget(panel->raisB, 20, 25);
|
||||
WMSetButtonText(panel->raisB, _("Raise window when switching focus with keyboard."));
|
||||
|
||||
WMMapSubwidgets(panel->optF);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitPreferences(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Miscellaneous Ergonomic Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
111
WPrefs.app/README
Normal file
111
WPrefs.app/README
Normal file
@@ -0,0 +1,111 @@
|
||||
|
||||
WPrefs.app
|
||||
==========
|
||||
|
||||
The WindowMaker Prerefences Application
|
||||
|
||||
|
||||
WPrefs.app is the preferences "editor" for the WindowMaker window
|
||||
manager. It can be used to set most of the preference options of WindowMaker
|
||||
and define it's applications menu. It also can change some settings
|
||||
that do not belong to WindowMaker.
|
||||
|
||||
Although WPrefs.app is designed to be easy to use, you should read the
|
||||
user guide to be fully aware of all available options and other features
|
||||
of WindowMaker that are not related to configuration.
|
||||
|
||||
To run WPrefs, do not put it in your search path. Instead, run it
|
||||
with the full path, like /usr/local/GNUstep/Apps/WPrefs.app/WPrefs
|
||||
Then, dock it's application icon. The dock will automatically detect it's
|
||||
icon and use it.
|
||||
|
||||
If you change configuration often, you might want to leave WPrefs
|
||||
always running, leaving it hidden while not in use. You can also make it
|
||||
be automatically started with WindowMaker and toggle the Start Hidden
|
||||
option in the attributes panel for the WPrefs window. Of course, it will
|
||||
use some memory, but by leaving it hidden it'll probably be swapped out and
|
||||
stay there until you unhide it.
|
||||
|
||||
WPrefs is still under development. Some of the configuration options are
|
||||
not yet configurable from WPrefs, notably the appearance related options.
|
||||
It might contain bugs that can corrupt your configuration files, so backup
|
||||
the contents of the ~/GNUstep/Defaults directory before using it.
|
||||
|
||||
|
||||
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
The mouse speed configuration is saved as a call for xset in
|
||||
~/G/D/L/W/autostart. WindowMaker calls this file when it is started.
|
||||
|
||||
If you don't want or can't use the menu definition section, do not
|
||||
open it's section (or if you do open it, do not Save), or WPrefs will
|
||||
overwrite your ~/G/D/WMRootMenu file.
|
||||
|
||||
Only options that have different values than what is found in the
|
||||
system-wide configuration file is saved.
|
||||
|
||||
WPrefs only supports property list menus. If you have a plain text file
|
||||
menu, it will not be read by WPrefs. You can either recreate the menu from
|
||||
scratch or not use WPrefs for menu definition. The old menu will not be
|
||||
overwritten if you recreate it.
|
||||
|
||||
|
||||
Build
|
||||
-----
|
||||
|
||||
WPrefs will be built automatically and installed with the rest of WindowMaker.
|
||||
|
||||
|
||||
|
||||
Customized Installation
|
||||
-----------------------
|
||||
|
||||
By default, WPrefs.app will be installed in the GNUstep applications
|
||||
directory, which is /usr/local/GNUstep/Apps. If you want to install it
|
||||
somewhere else, like in /some_weird_path/Apps, set the GNUSTEP_LOCAL_ROOT
|
||||
environment variable to some_weird_path before running configure for
|
||||
WindowMaker. Leave this variable always set (make it be set from your
|
||||
.profile or .tcshrc or whatever), or WPrefs.app will not find it's resource
|
||||
files (like icons).
|
||||
If you change your mind after installing, you can move the .app directory
|
||||
to one of the following GNUstep/Apps directories:
|
||||
|
||||
/usr/GNUstep/Apps
|
||||
|
||||
OR
|
||||
|
||||
/usr/local/GNUstep/Apps
|
||||
|
||||
OR
|
||||
|
||||
~/GNUstep/Apps
|
||||
|
||||
|
||||
|
||||
Credits
|
||||
-------
|
||||
|
||||
User interface design, programming and a few icons:
|
||||
Alfredo K. Kojima <kojima@windowmaker.org>
|
||||
|
||||
Icon and image artwork:
|
||||
Marco van Hylckama Vlieg <fatal@global.uibk.ac.at>
|
||||
|
||||
|
||||
WindowMaker
|
||||
-----------
|
||||
|
||||
If for some weird reason you end up with this preferences program and
|
||||
don't have WindowMaker yet, you can get more information about it at
|
||||
http://windowmaker.org and download it at ftp://ftp.windowmaker.org
|
||||
|
||||
|
||||
Contact
|
||||
-------
|
||||
|
||||
Send comments and bug reports to kojima@windowmaker.org
|
||||
Use the WindowMaker BUGFORM to report bugs.
|
||||
|
||||
335
WPrefs.app/Text.c
Normal file
335
WPrefs.app/Text.c
Normal file
@@ -0,0 +1,335 @@
|
||||
/* Text.c- text/font settings
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMPopUpButton *secP;
|
||||
WMButton *setB;
|
||||
|
||||
WMTextField *nameT;
|
||||
|
||||
WMLabel *sampleL;
|
||||
|
||||
WMFrame *alignF;
|
||||
WMButton *leftB;
|
||||
WMButton *centerB;
|
||||
WMButton *rightB;
|
||||
|
||||
|
||||
/**/
|
||||
WMFont *windowF;
|
||||
char *windowFont;
|
||||
WMFont *menuF;
|
||||
char *menuFont;
|
||||
WMFont *itemF;
|
||||
char *itemFont;
|
||||
WMFont *clipF;
|
||||
char *clipFont;
|
||||
WMFont *iconF;
|
||||
char *iconFont;
|
||||
WMFont *geoF;
|
||||
char *geoFont;
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "fonts"
|
||||
|
||||
|
||||
|
||||
|
||||
static void
|
||||
changePage(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int sect;
|
||||
|
||||
sect = WMGetPopUpButtonSelectedItem(w);
|
||||
|
||||
if (sect == 0) {
|
||||
WMMapWidget(panel->alignF);
|
||||
} else {
|
||||
WMUnmapWidget(panel->alignF);
|
||||
}
|
||||
|
||||
switch (sect) {
|
||||
case 0:
|
||||
WMSetTextFieldText(panel->nameT, panel->windowFont);
|
||||
WMSetLabelFont(panel->sampleL, panel->windowF);
|
||||
break;
|
||||
case 1:
|
||||
WMSetTextFieldText(panel->nameT, panel->menuFont);
|
||||
WMSetLabelFont(panel->sampleL, panel->menuF);
|
||||
break;
|
||||
case 2:
|
||||
WMSetTextFieldText(panel->nameT, panel->itemFont);
|
||||
WMSetLabelFont(panel->sampleL, panel->itemF);
|
||||
break;
|
||||
case 3:
|
||||
WMSetTextFieldText(panel->nameT, panel->iconFont);
|
||||
WMSetLabelFont(panel->sampleL, panel->iconF);
|
||||
break;
|
||||
case 4:
|
||||
WMSetTextFieldText(panel->nameT, panel->clipFont);
|
||||
WMSetLabelFont(panel->sampleL, panel->clipF);
|
||||
break;
|
||||
case 5:
|
||||
WMSetTextFieldText(panel->nameT, panel->geoFont);
|
||||
WMSetLabelFont(panel->sampleL, panel->geoF);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
char *str;
|
||||
|
||||
str = GetStringForKey("WindowTitleFont");
|
||||
if (!str)
|
||||
str = "-*-helvetica-bold-r-normal-*-12-*";
|
||||
panel->windowF = WMCreateFont(scr, str);
|
||||
panel->windowFont = wstrdup(str);
|
||||
|
||||
str = GetStringForKey("MenuTitleFont");
|
||||
if (!str)
|
||||
str = "-*-helvetica-bold-r-normal-*-12-*";
|
||||
panel->menuF = WMCreateFont(scr, str);
|
||||
panel->menuFont = wstrdup(str);
|
||||
|
||||
str = GetStringForKey("MenuTextFont");
|
||||
if (!str)
|
||||
str = "-*-helvetica-medium-r-normal-*-12-*";
|
||||
panel->itemF = WMCreateFont(scr, str);
|
||||
panel->itemFont = wstrdup(str);
|
||||
|
||||
str = GetStringForKey("IconTitleFont");
|
||||
if (!str)
|
||||
str = "-*-helvetica-medium-r-normal-*-8-*";
|
||||
panel->iconF = WMCreateFont(scr, str);
|
||||
panel->iconFont = wstrdup(str);
|
||||
|
||||
str = GetStringForKey("ClipTitleFont");
|
||||
if (!str)
|
||||
str = "-*-helvetica-medium-r-normal-*-10-*";
|
||||
panel->clipF = WMCreateFont(scr, str);
|
||||
panel->clipFont = wstrdup(str);
|
||||
|
||||
str = GetStringForKey("DisplayFont");
|
||||
if (!str)
|
||||
str = "-*-helvetica-medium-r-normal-*-12-*";
|
||||
panel->geoF = WMCreateFont(scr, str);
|
||||
panel->geoFont = wstrdup(str);
|
||||
|
||||
str = GetStringForKey("TitleJustify");
|
||||
if (strcasecmp(str,"left")==0)
|
||||
WMPerformButtonClick(panel->leftB);
|
||||
else if (strcasecmp(str,"center")==0)
|
||||
WMPerformButtonClick(panel->centerB);
|
||||
else if (strcasecmp(str,"right")==0)
|
||||
WMPerformButtonClick(panel->rightB);
|
||||
|
||||
changePage(panel->secP, panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
editedName(void *data, WMNotification *notification)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
|
||||
if ((int)WMGetNotificationClientData(notification)==WMReturnTextMovement) {
|
||||
char *name;
|
||||
WMFont *font;
|
||||
char buffer[256];
|
||||
|
||||
name = WMGetTextFieldText(panel->nameT);
|
||||
font = WMCreateFont(WMWidgetScreen(panel->win), name);
|
||||
if (!font) {
|
||||
sprintf(buffer, _("Invalid font %s."), name);
|
||||
WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win,
|
||||
_("Error"), buffer, _("OK"), NULL, NULL);
|
||||
free(name);
|
||||
} else {
|
||||
int sect;
|
||||
|
||||
sect = WMGetPopUpButtonSelectedItem(panel->secP);
|
||||
|
||||
switch (sect) {
|
||||
case 0:
|
||||
if (panel->windowFont)
|
||||
free(panel->windowFont);
|
||||
panel->windowFont = name;
|
||||
if (panel->windowF)
|
||||
WMReleaseFont(panel->windowF);
|
||||
panel->windowF = font;
|
||||
break;
|
||||
case 1:
|
||||
if (panel->menuFont)
|
||||
free(panel->menuFont);
|
||||
panel->menuFont = name;
|
||||
if (panel->menuF)
|
||||
WMReleaseFont(panel->menuF);
|
||||
panel->menuF = font;
|
||||
break;
|
||||
case 2:
|
||||
if (panel->itemFont)
|
||||
free(panel->itemFont);
|
||||
panel->itemFont = name;
|
||||
if (panel->itemF)
|
||||
WMReleaseFont(panel->itemF);
|
||||
panel->itemF = font;
|
||||
break;
|
||||
case 3:
|
||||
if (panel->iconFont)
|
||||
free(panel->iconFont);
|
||||
panel->iconFont = name;
|
||||
if (panel->iconF)
|
||||
WMReleaseFont(panel->iconF);
|
||||
panel->iconF = font;
|
||||
break;
|
||||
case 4:
|
||||
if (panel->clipFont)
|
||||
free(panel->clipFont);
|
||||
panel->clipFont = name;
|
||||
if (panel->clipF)
|
||||
WMReleaseFont(panel->clipF);
|
||||
panel->clipF = font;
|
||||
break;
|
||||
case 5:
|
||||
if (panel->geoFont)
|
||||
free(panel->geoFont);
|
||||
panel->geoFont = name;
|
||||
if (panel->geoF)
|
||||
WMReleaseFont(panel->geoF);
|
||||
panel->geoF = font;
|
||||
break;
|
||||
}
|
||||
changePage(panel->secP, panel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
panel->setB = WMCreateCommandButton(panel->frame);
|
||||
WMResizeWidget(panel->setB, 145, 20);
|
||||
WMMoveWidget(panel->setB, 50, 25);
|
||||
WMSetButtonText(panel->setB, _("Set Font..."));
|
||||
|
||||
panel->secP = WMCreatePopUpButton(panel->frame);
|
||||
WMResizeWidget(panel->secP, 260, 20);
|
||||
WMMoveWidget(panel->secP, 205, 25);
|
||||
WMSetPopUpButtonAction(panel->secP, changePage, panel);
|
||||
WMAddPopUpButtonItem(panel->secP, _("Window Title Font"));
|
||||
WMAddPopUpButtonItem(panel->secP, _("Menu Title Font"));
|
||||
WMAddPopUpButtonItem(panel->secP, _("Menu Item Font"));
|
||||
WMAddPopUpButtonItem(panel->secP, _("Icon Title Font"));
|
||||
WMAddPopUpButtonItem(panel->secP, _("Clip Title Font"));
|
||||
WMAddPopUpButtonItem(panel->secP, _("Geometry Display Font"));
|
||||
WMSetPopUpButtonSelectedItem(panel->secP, 0);
|
||||
|
||||
panel->nameT = WMCreateTextField(panel->frame);
|
||||
WMResizeWidget(panel->nameT, 285, 24);
|
||||
WMMoveWidget(panel->nameT, 50, 80);
|
||||
WMAddNotificationObserver(editedName, panel,
|
||||
WMTextDidEndEditingNotification, panel->nameT);
|
||||
|
||||
panel->sampleL = WMCreateLabel(panel->frame);
|
||||
WMResizeWidget(panel->sampleL, 285, 85);
|
||||
WMMoveWidget(panel->sampleL, 50, 135);
|
||||
WMSetLabelRelief(panel->sampleL, WRSunken);
|
||||
WMSetLabelText(panel->sampleL, _("Sample Text\nabcdefghijklmnopqrstuvxywz\nABCDEFGHIJKLMNOPQRSTUVXYWZ\n0123456789"));
|
||||
|
||||
panel->alignF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->alignF, 120, 160);
|
||||
WMMoveWidget(panel->alignF, 345, 60);
|
||||
WMSetFrameTitle(panel->alignF, _("Alignment"));
|
||||
|
||||
panel->leftB = WMCreateButton(panel->alignF, WBTOnOff);
|
||||
WMResizeWidget(panel->leftB, 100, 24);
|
||||
WMMoveWidget(panel->leftB, 10, 25);
|
||||
WMSetButtonText(panel->leftB, _("Left"));
|
||||
WMSetButtonTextAlignment(panel->leftB, WALeft);
|
||||
|
||||
panel->centerB = WMCreateButton(panel->alignF, WBTOnOff);
|
||||
WMResizeWidget(panel->centerB, 100, 24);
|
||||
WMMoveWidget(panel->centerB, 10, 70);
|
||||
WMSetButtonText(panel->centerB, _("Center"));
|
||||
WMSetButtonTextAlignment(panel->centerB, WACenter);
|
||||
WMGroupButtons(panel->leftB, panel->centerB);
|
||||
|
||||
panel->rightB = WMCreateButton(panel->alignF, WBTOnOff);
|
||||
WMResizeWidget(panel->rightB, 100, 24);
|
||||
WMMoveWidget(panel->rightB, 10, 115);
|
||||
WMSetButtonText(panel->rightB, _("Right"));
|
||||
WMSetButtonTextAlignment(panel->rightB, WARight);
|
||||
WMGroupButtons(panel->leftB, panel->rightB);
|
||||
|
||||
WMMapSubwidgets(panel->alignF);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitText(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Text Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
|
||||
641
WPrefs.app/TextureAndColor.c
Normal file
641
WPrefs.app/TextureAndColor.c
Normal file
@@ -0,0 +1,641 @@
|
||||
/* TextureAndColor.c- color/texture for titlebar etc.
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMPopUpButton *secP;
|
||||
|
||||
WMLabel *prevL;
|
||||
|
||||
/* window titlebar */
|
||||
WMFrame *focF;
|
||||
WMColorWell *focC;
|
||||
WMLabel *focL;
|
||||
WMTextField *focT;
|
||||
WMLabel *foc2L;
|
||||
WMButton *focB;
|
||||
|
||||
WMFrame *unfF;
|
||||
WMColorWell *unfC;
|
||||
WMLabel *unfL;
|
||||
WMTextField *unfT;
|
||||
WMLabel *unf2L;
|
||||
WMButton *unfB;
|
||||
|
||||
WMFrame *ownF;
|
||||
WMColorWell *ownC;
|
||||
WMLabel *ownL;
|
||||
WMTextField *ownT;
|
||||
WMLabel *own2L;
|
||||
WMButton *ownB;
|
||||
|
||||
/* menu title */
|
||||
WMFrame *backF;
|
||||
WMTextField *backT;
|
||||
WMButton *backB;
|
||||
|
||||
WMFrame *textF;
|
||||
WMColorWell *textC;
|
||||
|
||||
/* menu items */
|
||||
WMFrame *unsF;
|
||||
WMTextField *unsT;
|
||||
WMButton *unsB;
|
||||
WMLabel *unsL;
|
||||
WMColorWell *unsnC;
|
||||
WMLabel *unsnL;
|
||||
WMColorWell *unsdC;
|
||||
WMLabel *unsdL;
|
||||
|
||||
WMFrame *selF;
|
||||
WMColorWell *seltC;
|
||||
WMLabel *seltL;
|
||||
WMColorWell *selbC;
|
||||
WMLabel *selbL;
|
||||
|
||||
/* workspace/clip */
|
||||
WMFrame *workF;
|
||||
WMTextField *workT;
|
||||
WMButton *workB;
|
||||
|
||||
WMFrame *clipF;
|
||||
WMColorWell *clipnC;
|
||||
WMColorWell *clipcC;
|
||||
WMLabel *clipnL;
|
||||
WMLabel *clipcL;
|
||||
|
||||
/* icon */
|
||||
WMFrame *iconF;
|
||||
WMTextField *iconT;
|
||||
WMButton *iconB;
|
||||
|
||||
|
||||
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 void
|
||||
updatePreviewBox(_Panel *panel, int elements)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
changePage(WMWidget *self, void *data)
|
||||
{
|
||||
int i;
|
||||
_Panel *panel = (_Panel*)data;
|
||||
|
||||
i = WMGetPopUpButtonSelectedItem(self);
|
||||
|
||||
if (i==0) {
|
||||
WMMapWidget(panel->focF);
|
||||
WMMapWidget(panel->unfF);
|
||||
WMMapWidget(panel->ownF);
|
||||
} else if (i==1) {
|
||||
WMMapWidget(panel->backF);
|
||||
WMMapWidget(panel->textF);
|
||||
} else if (i==2) {
|
||||
WMMapWidget(panel->unsF);
|
||||
WMMapWidget(panel->selF);
|
||||
} else if (i==3) {
|
||||
WMMapWidget(panel->workF);
|
||||
WMMapWidget(panel->clipF);
|
||||
} else if (i==4) {
|
||||
WMMapWidget(panel->iconF);
|
||||
}
|
||||
|
||||
if (i!=0) {
|
||||
WMUnmapWidget(panel->focF);
|
||||
WMUnmapWidget(panel->unfF);
|
||||
WMUnmapWidget(panel->ownF);
|
||||
}
|
||||
if (i!=1) {
|
||||
WMUnmapWidget(panel->backF);
|
||||
WMUnmapWidget(panel->textF);
|
||||
}
|
||||
if (i!=2) {
|
||||
WMUnmapWidget(panel->unsF);
|
||||
WMUnmapWidget(panel->selF);
|
||||
}
|
||||
if (i!=3) {
|
||||
WMUnmapWidget(panel->workF);
|
||||
WMUnmapWidget(panel->clipF);
|
||||
}
|
||||
if (i!=4) {
|
||||
WMUnmapWidget(panel->iconF);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static char*
|
||||
getStrArrayForKey(char *key)
|
||||
{
|
||||
proplist_t v;
|
||||
|
||||
v = GetObjectForKey(key);
|
||||
if (!v)
|
||||
return NULL;
|
||||
|
||||
return PLGetDescription(v);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
char *str;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
WMColor *color;
|
||||
|
||||
str = GetStringForKey("FTitleColor");
|
||||
if (!str)
|
||||
str = "white";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->focC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
str = GetStringForKey("PTitleColor");
|
||||
if (!str)
|
||||
str = "white";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->ownC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
str = GetStringForKey("UTitleColor");
|
||||
if (!str)
|
||||
str = "black";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->unfC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
|
||||
str = getStrArrayForKey("FTitleBack");
|
||||
if (!str)
|
||||
str = wstrdup("(solid, black)");
|
||||
WMSetTextFieldText(panel->focT, str);
|
||||
free(str);
|
||||
|
||||
str = getStrArrayForKey("PTitleBack");
|
||||
if (!str)
|
||||
str = wstrdup("(solid, gray40)");
|
||||
WMSetTextFieldText(panel->ownT, str);
|
||||
free(str);
|
||||
|
||||
str = getStrArrayForKey("UTitleBack");
|
||||
if (!str)
|
||||
str = wstrdup("(solid, grey66)");
|
||||
WMSetTextFieldText(panel->unfT, str);
|
||||
free(str);
|
||||
|
||||
/**/
|
||||
|
||||
str = GetStringForKey("MenuTitleColor");
|
||||
if (!str)
|
||||
str = "white";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->textC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
str = getStrArrayForKey("MenuTitleBack");
|
||||
if (!str)
|
||||
str = wstrdup("(solid, black)");
|
||||
WMSetTextFieldText(panel->backT, str);
|
||||
free(str);
|
||||
|
||||
/**/
|
||||
|
||||
str = getStrArrayForKey("MenuTextBack");
|
||||
if (!str)
|
||||
str = wstrdup("gray66");
|
||||
WMSetTextFieldText(panel->unsT, str);
|
||||
free(str);
|
||||
|
||||
str = GetStringForKey("MenuTextColor");
|
||||
if (!str)
|
||||
str = "black";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->unsnC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
str = GetStringForKey("MenuDisabledColor");
|
||||
if (!str)
|
||||
str = "gray40";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->unsdC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
str = GetStringForKey("HighlightTextColor");
|
||||
if (!str)
|
||||
str = "white";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->seltC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
str = GetStringForKey("HighlightColor");
|
||||
if (!str)
|
||||
str = "black";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->selbC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
/**/
|
||||
|
||||
str = getStrArrayForKey("WorkspaceBack");
|
||||
WMSetTextFieldText(panel->workT, str);
|
||||
if (str)
|
||||
free(str);
|
||||
|
||||
|
||||
str = GetStringForKey("ClipTitleColor");
|
||||
if (!str)
|
||||
str = "black";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->clipnC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
str = GetStringForKey("CClipTitleColor");
|
||||
if (!str)
|
||||
str = "grey40";
|
||||
color = WMCreateNamedColor(scr, str, True);
|
||||
WMSetColorWellColor(panel->clipcC, color);
|
||||
WMReleaseColor(color);
|
||||
|
||||
/**/
|
||||
|
||||
str = getStrArrayForKey("IconBack");
|
||||
if (!str)
|
||||
str = wstrdup("(solid, gray66)");
|
||||
WMSetTextFieldText(panel->iconT, str);
|
||||
free(str);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
panel->secP = WMCreatePopUpButton(panel->frame);
|
||||
WMResizeWidget(panel->secP, 220, 20);
|
||||
WMMoveWidget(panel->secP, 15, 10);
|
||||
WMSetPopUpButtonAction(panel->secP, changePage, panel);
|
||||
|
||||
WMAddPopUpButtonItem(panel->secP, _("Window Title Bar"));
|
||||
WMAddPopUpButtonItem(panel->secP, _("Menu Title Bar"));
|
||||
WMAddPopUpButtonItem(panel->secP, _("Menu Items"));
|
||||
WMAddPopUpButtonItem(panel->secP, _("Workspace/Clip"));
|
||||
WMAddPopUpButtonItem(panel->secP, _("Icons"));
|
||||
|
||||
panel->prevL = WMCreateLabel(panel->frame);
|
||||
WMResizeWidget(panel->prevL, 220, 185);
|
||||
WMMoveWidget(panel->prevL, 15, 40);
|
||||
WMSetLabelRelief(panel->prevL, WRSunken);
|
||||
|
||||
/* window titlebar */
|
||||
panel->focF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->focF, 265, 70);
|
||||
WMMoveWidget(panel->focF, 245, 5);
|
||||
WMSetFrameTitle(panel->focF, _("Focused Window"));
|
||||
|
||||
panel->focC = WMCreateColorWell(panel->focF);
|
||||
WMResizeWidget(panel->focC, 60, 35);
|
||||
WMMoveWidget(panel->focC, 15, 15);
|
||||
|
||||
panel->focT = WMCreateTextField(panel->focF);
|
||||
WMResizeWidget(panel->focT, 116, 20);
|
||||
WMMoveWidget(panel->focT, 85, 25);
|
||||
|
||||
panel->foc2L = WMCreateLabel(panel->focF);
|
||||
WMResizeWidget(panel->foc2L, 165, 16);
|
||||
WMMoveWidget(panel->foc2L, 90, 50);
|
||||
WMSetLabelText(panel->foc2L, _("Texture"));
|
||||
WMSetLabelTextAlignment(panel->foc2L, WACenter);
|
||||
|
||||
panel->focL = WMCreateLabel(panel->focF);
|
||||
WMResizeWidget(panel->focL, 100, 16);
|
||||
WMMoveWidget(panel->focL, 15, 50);
|
||||
WMSetLabelText(panel->focL, _("Text Color"));
|
||||
|
||||
panel->focB = WMCreateCommandButton(panel->focF);
|
||||
WMResizeWidget(panel->focB, 48, 22);
|
||||
WMMoveWidget(panel->focB, 205, 24);
|
||||
WMSetButtonText(panel->focB, _("Set..."));
|
||||
|
||||
WMMapSubwidgets(panel->focF);
|
||||
/**/
|
||||
panel->unfF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->unfF, 265, 70);
|
||||
WMMoveWidget(panel->unfF, 245, 80);
|
||||
WMSetFrameTitle(panel->unfF, _("Unfocused Window"));
|
||||
|
||||
panel->unfC = WMCreateColorWell(panel->unfF);
|
||||
WMResizeWidget(panel->unfC, 60, 35);
|
||||
WMMoveWidget(panel->unfC, 15, 15);
|
||||
|
||||
panel->unfT = WMCreateTextField(panel->unfF);
|
||||
WMResizeWidget(panel->unfT, 116, 20);
|
||||
WMMoveWidget(panel->unfT, 85, 25);
|
||||
|
||||
panel->unf2L = WMCreateLabel(panel->unfF);
|
||||
WMResizeWidget(panel->unf2L, 165, 16);
|
||||
WMMoveWidget(panel->unf2L, 90, 50);
|
||||
WMSetLabelText(panel->unf2L, _("Texture"));
|
||||
WMSetLabelTextAlignment(panel->unf2L, WACenter);
|
||||
|
||||
panel->unfL = WMCreateLabel(panel->unfF);
|
||||
WMResizeWidget(panel->unfL, 100, 16);
|
||||
WMMoveWidget(panel->unfL, 15, 50);
|
||||
WMSetLabelText(panel->unfL, _("Text Color"));
|
||||
|
||||
panel->unfB = WMCreateCommandButton(panel->unfF);
|
||||
WMResizeWidget(panel->unfB, 48, 22);
|
||||
WMMoveWidget(panel->unfB, 205, 24);
|
||||
WMSetButtonText(panel->unfB, _("Set..."));
|
||||
|
||||
WMMapSubwidgets(panel->unfF);
|
||||
/**/
|
||||
panel->ownF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->ownF, 265, 70);
|
||||
WMMoveWidget(panel->ownF, 245, 155);
|
||||
WMSetFrameTitle(panel->ownF, _("Owner of Focused Window"));
|
||||
|
||||
panel->ownC = WMCreateColorWell(panel->ownF);
|
||||
WMResizeWidget(panel->ownC, 60, 35);
|
||||
WMMoveWidget(panel->ownC, 15, 15);
|
||||
|
||||
panel->ownT = WMCreateTextField(panel->ownF);
|
||||
WMResizeWidget(panel->ownT, 116, 20);
|
||||
WMMoveWidget(panel->ownT, 85, 25);
|
||||
|
||||
panel->own2L = WMCreateLabel(panel->ownF);
|
||||
WMResizeWidget(panel->own2L, 165, 16);
|
||||
WMMoveWidget(panel->own2L, 90, 50);
|
||||
WMSetLabelText(panel->own2L, _("Texture"));
|
||||
WMSetLabelTextAlignment(panel->own2L, WACenter);
|
||||
|
||||
panel->ownL = WMCreateLabel(panel->ownF);
|
||||
WMResizeWidget(panel->ownL, 100, 16);
|
||||
WMMoveWidget(panel->ownL, 15, 50);
|
||||
WMSetLabelText(panel->ownL, _("Text Color"));
|
||||
|
||||
panel->ownB = WMCreateCommandButton(panel->ownF);
|
||||
WMResizeWidget(panel->ownB, 48, 22);
|
||||
WMMoveWidget(panel->ownB, 205, 24);
|
||||
WMSetButtonText(panel->ownB, _("Set..."));
|
||||
|
||||
WMMapSubwidgets(panel->ownF);
|
||||
|
||||
/***************** Menu Item *****************/
|
||||
|
||||
panel->unsF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->unsF, 260, 140);
|
||||
WMMoveWidget(panel->unsF, 250, 5);
|
||||
WMSetFrameTitle(panel->unsF, _("Unselected Items"));
|
||||
|
||||
panel->unsT = WMCreateTextField(panel->unsF);
|
||||
WMResizeWidget(panel->unsT, 175, 20);
|
||||
WMMoveWidget(panel->unsT, 15, 25);
|
||||
|
||||
panel->unsL = WMCreateLabel(panel->unsF);
|
||||
WMResizeWidget(panel->unsL, 175, 16);
|
||||
WMMoveWidget(panel->unsL, 15, 50);
|
||||
WMSetLabelTextAlignment(panel->unsL, WACenter);
|
||||
WMSetLabelText(panel->unsL, _("Background"));
|
||||
|
||||
panel->unsB = WMCreateCommandButton(panel->unsF);
|
||||
WMResizeWidget(panel->unsB, 48, 22);
|
||||
WMMoveWidget(panel->unsB, 200, 24);
|
||||
WMSetButtonText(panel->unsB, _("Set..."));
|
||||
|
||||
panel->unsnC = WMCreateColorWell(panel->unsF);
|
||||
WMResizeWidget(panel->unsnC, 60, 40);
|
||||
WMMoveWidget(panel->unsnC, 40, 75);
|
||||
|
||||
panel->unsnL = WMCreateLabel(panel->unsF);
|
||||
WMResizeWidget(panel->unsnL, 120, 16);
|
||||
WMMoveWidget(panel->unsnL, 10, 117);
|
||||
WMSetLabelTextAlignment(panel->unsnL, WACenter);
|
||||
WMSetLabelText(panel->unsnL, _("Normal Text"));
|
||||
|
||||
panel->unsdC = WMCreateColorWell(panel->unsF);
|
||||
WMResizeWidget(panel->unsdC, 60, 40);
|
||||
WMMoveWidget(panel->unsdC, 160, 75);
|
||||
|
||||
panel->unsdL = WMCreateLabel(panel->unsF);
|
||||
WMResizeWidget(panel->unsdL, 120, 16);
|
||||
WMMoveWidget(panel->unsdL, 130, 117);
|
||||
WMSetLabelTextAlignment(panel->unsdL, WACenter);
|
||||
WMSetLabelText(panel->unsdL, _("Disabled Text"));
|
||||
|
||||
WMMapSubwidgets(panel->unsF);
|
||||
|
||||
/**/
|
||||
|
||||
panel->selF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->selF, 260, 75);
|
||||
WMMoveWidget(panel->selF, 250, 150);
|
||||
WMSetFrameTitle(panel->selF, _("Selected Items"));
|
||||
|
||||
panel->seltC = WMCreateColorWell(panel->selF);
|
||||
WMResizeWidget(panel->seltC, 60, 36);
|
||||
WMMoveWidget(panel->seltC, 40, 20);
|
||||
|
||||
panel->seltL = WMCreateLabel(panel->selF);
|
||||
WMResizeWidget(panel->seltL, 120, 16);
|
||||
WMMoveWidget(panel->seltL, 10, 56);
|
||||
WMSetLabelTextAlignment(panel->seltL, WACenter);
|
||||
WMSetLabelText(panel->seltL, _("Text"));
|
||||
|
||||
panel->selbC = WMCreateColorWell(panel->selF);
|
||||
WMResizeWidget(panel->selbC, 60, 36);
|
||||
WMMoveWidget(panel->selbC, 160, 20);
|
||||
|
||||
panel->selbL = WMCreateLabel(panel->selF);
|
||||
WMResizeWidget(panel->selbL, 120, 16);
|
||||
WMMoveWidget(panel->selbL, 130, 56);
|
||||
WMSetLabelTextAlignment(panel->selbL, WACenter);
|
||||
WMSetLabelText(panel->selbL, _("Background"));
|
||||
|
||||
WMMapSubwidgets(panel->selF);
|
||||
|
||||
/***************** Menu Title *****************/
|
||||
panel->backF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->backF, 260, 110);
|
||||
WMMoveWidget(panel->backF, 250, 35);
|
||||
WMSetFrameTitle(panel->backF, _("Menu Title Background"));
|
||||
|
||||
panel->backT = WMCreateTextField(panel->backF);
|
||||
WMResizeWidget(panel->backT, 210, 20);
|
||||
WMMoveWidget(panel->backT, 25, 35);
|
||||
|
||||
panel->backB = WMCreateCommandButton(panel->backF);
|
||||
WMResizeWidget(panel->backB, 50, 24);
|
||||
WMMoveWidget(panel->backB, 185, 60);
|
||||
WMSetButtonText(panel->backB, _("Set..."));
|
||||
|
||||
WMMapSubwidgets(panel->backF);
|
||||
|
||||
/**/
|
||||
|
||||
panel->textF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->textF, 260, 75);
|
||||
WMMoveWidget(panel->textF, 250, 150);
|
||||
WMSetFrameTitle(panel->textF, _("Menu Title Text"));
|
||||
|
||||
panel->textC = WMCreateColorWell(panel->textF);
|
||||
WMResizeWidget(panel->textC, 60, 40);
|
||||
WMMoveWidget(panel->textC, 100, 20);
|
||||
|
||||
WMMapSubwidgets(panel->textF);
|
||||
|
||||
/***************** Workspace ****************/
|
||||
panel->workF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->workF, 260, 90);
|
||||
WMMoveWidget(panel->workF, 250, 35);
|
||||
WMSetFrameTitle(panel->workF, _("Workspace Background"));
|
||||
|
||||
panel->workT = WMCreateTextField(panel->workF);
|
||||
WMResizeWidget(panel->workT, 220, 20);
|
||||
WMMoveWidget(panel->workT, 20, 25);
|
||||
|
||||
panel->workB = WMCreateCommandButton(panel->workF);
|
||||
WMResizeWidget(panel->workB, 70, 24);
|
||||
WMMoveWidget(panel->workB, 170, 55);
|
||||
WMSetButtonText(panel->workB, _("Change"));
|
||||
|
||||
/**/
|
||||
panel->clipF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->clipF, 260, 90);
|
||||
WMMoveWidget(panel->clipF, 250, 135);
|
||||
WMSetFrameTitle(panel->clipF, _("Clip Title Text"));
|
||||
|
||||
panel->clipnC = WMCreateColorWell(panel->clipF);
|
||||
WMResizeWidget(panel->clipnC, 60, 40);
|
||||
WMMoveWidget(panel->clipnC, 40, 25);
|
||||
|
||||
panel->clipnL = WMCreateLabel(panel->clipF);
|
||||
WMResizeWidget(panel->clipnL, 120, 16);
|
||||
WMMoveWidget(panel->clipnL, 10, 70);
|
||||
WMSetLabelTextAlignment(panel->clipnL, WACenter);
|
||||
WMSetLabelText(panel->clipnL, _("Normal"));
|
||||
|
||||
panel->clipcC = WMCreateColorWell(panel->clipF);
|
||||
WMResizeWidget(panel->clipcC, 60, 40);
|
||||
WMMoveWidget(panel->clipcC, 160, 25);
|
||||
|
||||
panel->clipcL = WMCreateLabel(panel->clipF);
|
||||
WMResizeWidget(panel->clipcL, 120, 16);
|
||||
WMMoveWidget(panel->clipcL, 130, 70);
|
||||
WMSetLabelTextAlignment(panel->clipcL, WACenter);
|
||||
WMSetLabelText(panel->clipcL, _("Collapsed"));
|
||||
|
||||
WMMapSubwidgets(panel->clipF);
|
||||
|
||||
|
||||
|
||||
WMMapSubwidgets(panel->workF);
|
||||
|
||||
/***************** Icon *****************/
|
||||
panel->iconF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->iconF, 260, 190);
|
||||
WMMoveWidget(panel->iconF, 250, 35);
|
||||
WMSetFrameTitle(panel->iconF, _("Icon Background"));
|
||||
|
||||
panel->iconT = WMCreateTextField(panel->iconF);
|
||||
WMResizeWidget(panel->iconT, 220, 20);
|
||||
WMMoveWidget(panel->iconT, 20, 80);
|
||||
|
||||
panel->iconB = WMCreateCommandButton(panel->iconF);
|
||||
WMResizeWidget(panel->iconB, 50, 24);
|
||||
WMMoveWidget(panel->iconB, 190, 105);
|
||||
WMSetButtonText(panel->iconB, _("Set..."));
|
||||
|
||||
WMMapSubwidgets(panel->iconF);
|
||||
/**/
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
WMSetPopUpButtonSelectedItem(panel->secP, 0);
|
||||
changePage(panel->secP, panel);
|
||||
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitTextureAndColor(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Texture and Color Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
855
WPrefs.app/WPrefs.c
Normal file
855
WPrefs.app/WPrefs.c
Normal file
@@ -0,0 +1,855 @@
|
||||
/* WPrefs.c- main window and other basic stuff
|
||||
*
|
||||
* WPrefs - WindowMaker 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 <assert.h>
|
||||
|
||||
|
||||
extern Panel *InitWindowHandling(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitKeyboardSettings(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitMouseSettings(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitKeyboardShortcuts(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitWorkspace(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitFocus(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 *InitConfigurations(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitPaths(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitMenu(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitExpert(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitMenuPreferences(WMScreen *scr, WMWindow *win);
|
||||
|
||||
extern Panel *InitIcons(WMScreen *scr, WMWindow *win);
|
||||
|
||||
|
||||
#define MAX_SECTIONS 16
|
||||
|
||||
|
||||
typedef struct _WPrefs {
|
||||
WMWindow *win;
|
||||
|
||||
WMScrollView *scrollV;
|
||||
WMFrame *buttonF;
|
||||
WMButton *sectionB[MAX_SECTIONS];
|
||||
|
||||
int sectionCount;
|
||||
|
||||
WMButton *saveBtn;
|
||||
WMButton *closeBtn;
|
||||
WMButton *undoBtn;
|
||||
WMButton *undosBtn;
|
||||
|
||||
WMFrame *banner;
|
||||
WMLabel *nameL;
|
||||
WMLabel *versionL;
|
||||
WMLabel *creditsL;
|
||||
WMLabel *statusL;
|
||||
|
||||
Panel *currentPanel;
|
||||
} _WPrefs;
|
||||
|
||||
|
||||
static _WPrefs WPrefs;
|
||||
|
||||
/* system wide defaults dictionary. Read-only */
|
||||
static proplist_t GlobalDB = NULL;
|
||||
/* user defaults dictionary */
|
||||
static proplist_t WindowMakerDB = NULL;
|
||||
|
||||
|
||||
static Bool TIFFOK = False;
|
||||
|
||||
|
||||
#define INITIALIZED_PANEL (1<<0)
|
||||
|
||||
|
||||
|
||||
|
||||
static void loadConfigurations(WMScreen *scr, WMWindow *mainw);
|
||||
|
||||
static void savePanelData(Panel *panel);
|
||||
|
||||
|
||||
void
|
||||
quit(WMWidget *w, void *data)
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save(WMWidget *w, void *data)
|
||||
{
|
||||
int i;
|
||||
proplist_t p1, p2;
|
||||
proplist_t keyList;
|
||||
proplist_t key;
|
||||
|
||||
|
||||
/* puts("gathering data");*/
|
||||
for (i=0; i<WPrefs.sectionCount; i++) {
|
||||
PanelRec *rec = WMGetHangedData(WPrefs.sectionB[i]);
|
||||
if ((rec->callbacks.flags & INITIALIZED_PANEL))
|
||||
savePanelData((Panel*)rec);
|
||||
}
|
||||
/* puts("compressing data");*/
|
||||
/* compare the user dictionary with the global and remove redundant data */
|
||||
keyList = PLGetAllDictionaryKeys(GlobalDB);
|
||||
/* puts(PLGetDescription(WindowMakerDB));*/
|
||||
for (i=0; i<PLGetNumberOfElements(keyList); i++) {
|
||||
key = PLGetArrayElement(keyList, i);
|
||||
|
||||
/* We don't have this value anyway, so no problem.
|
||||
* Probably a new option */
|
||||
p1 = PLGetDictionaryEntry(WindowMakerDB, key);
|
||||
if (!p1)
|
||||
continue;
|
||||
/* The global doesn't have it, so no problem either. */
|
||||
p2 = PLGetDictionaryEntry(GlobalDB, key);
|
||||
if (!p2)
|
||||
continue;
|
||||
/* If both values are the same, don't save. */
|
||||
if (PLIsEqual(p1, p2))
|
||||
PLRemoveDictionaryEntry(WindowMakerDB, key);
|
||||
}
|
||||
/* puts(PLGetDescription(WindowMakerDB));*/
|
||||
PLRelease(keyList);
|
||||
/* puts("storing data");*/
|
||||
|
||||
PLSave(WindowMakerDB, YES);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
undo(WMWidget *w, void *data)
|
||||
{
|
||||
PanelRec *rec = (PanelRec*)WPrefs.currentPanel;
|
||||
|
||||
if (!rec)
|
||||
return;
|
||||
|
||||
if (rec->callbacks.undoChanges
|
||||
&& (rec->callbacks.flags & INITIALIZED_PANEL)) {
|
||||
(*rec->callbacks.undoChanges)(WPrefs.currentPanel);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
undoAll(WMWidget *w, void *data)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i<WPrefs.sectionCount; i++) {
|
||||
PanelRec *rec = WMGetHangedData(WPrefs.sectionB[i]);
|
||||
|
||||
if (rec->callbacks.undoChanges
|
||||
&& (rec->callbacks.flags & INITIALIZED_PANEL))
|
||||
(*rec->callbacks.undoChanges)((Panel*)rec);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createMainWindow(WMScreen *scr)
|
||||
{
|
||||
WMScroller *scroller;
|
||||
WMFont *font;
|
||||
char buffer[128];
|
||||
|
||||
WPrefs.win = WMCreateWindow(scr, "wprefs");
|
||||
WMResizeWidget(WPrefs.win, 520, 390);
|
||||
WMSetWindowTitle(WPrefs.win, _("WindowMaker Preferences"));
|
||||
WMSetWindowCloseAction(WPrefs.win, quit, NULL);
|
||||
WMSetWindowMaxSize(WPrefs.win, 520, 390);
|
||||
WMSetWindowMinSize(WPrefs.win, 520, 390);
|
||||
WMSetWindowMiniwindowTitle(WPrefs.win, "Preferences");
|
||||
WMSetWindowMiniwindowImage(WPrefs.win, WMGetApplicationIconImage(scr));
|
||||
|
||||
WPrefs.scrollV = WMCreateScrollView(WPrefs.win);
|
||||
WMResizeWidget(WPrefs.scrollV, 500, 87);
|
||||
WMMoveWidget(WPrefs.scrollV, 10, 10);
|
||||
WMSetScrollViewRelief(WPrefs.scrollV, WRSunken);
|
||||
WMSetScrollViewHasHorizontalScroller(WPrefs.scrollV, True);
|
||||
WMSetScrollViewHasVerticalScroller(WPrefs.scrollV, False);
|
||||
scroller = WMGetScrollViewHorizontalScroller(WPrefs.scrollV);
|
||||
WMSetScrollerArrowsPosition(scroller, WSANone);
|
||||
|
||||
WPrefs.buttonF = WMCreateFrame(WPrefs.win);
|
||||
WMSetFrameRelief(WPrefs.buttonF, WRFlat);
|
||||
|
||||
WMSetScrollViewContentView(WPrefs.scrollV, WMWidgetView(WPrefs.buttonF));
|
||||
|
||||
WPrefs.undosBtn = WMCreateCommandButton(WPrefs.win);
|
||||
WMResizeWidget(WPrefs.undosBtn, 90, 28);
|
||||
WMMoveWidget(WPrefs.undosBtn, 135, 350);
|
||||
WMSetButtonText(WPrefs.undosBtn, _("Revert Page"));
|
||||
WMSetButtonAction(WPrefs.undosBtn, undo, NULL);
|
||||
|
||||
WPrefs.undoBtn = WMCreateCommandButton(WPrefs.win);
|
||||
WMResizeWidget(WPrefs.undoBtn, 90, 28);
|
||||
WMMoveWidget(WPrefs.undoBtn, 235, 350);
|
||||
WMSetButtonText(WPrefs.undoBtn, _("Revert All"));
|
||||
WMSetButtonAction(WPrefs.undoBtn, undoAll, NULL);
|
||||
|
||||
WPrefs.saveBtn = WMCreateCommandButton(WPrefs.win);
|
||||
WMResizeWidget(WPrefs.saveBtn, 80, 28);
|
||||
WMMoveWidget(WPrefs.saveBtn, 335, 350);
|
||||
WMSetButtonText(WPrefs.saveBtn, _("Save"));
|
||||
WMSetButtonAction(WPrefs.saveBtn, save, NULL);
|
||||
|
||||
WPrefs.closeBtn = WMCreateCommandButton(WPrefs.win);
|
||||
WMResizeWidget(WPrefs.closeBtn, 80, 28);
|
||||
WMMoveWidget(WPrefs.closeBtn, 425, 350);
|
||||
WMSetButtonText(WPrefs.closeBtn, _("Close"));
|
||||
WMSetButtonAction(WPrefs.closeBtn, quit, NULL);
|
||||
|
||||
/* banner */
|
||||
WPrefs.banner = WMCreateFrame(WPrefs.win);
|
||||
WMResizeWidget(WPrefs.banner, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(WPrefs.banner, FRAME_LEFT, FRAME_TOP);
|
||||
WMSetFrameRelief(WPrefs.banner, WRFlat);
|
||||
|
||||
font = WMCreateFont(scr, "-*-times-bold-r-*-*-24-*-*-*-*-*-*-*");
|
||||
if (!font)
|
||||
font = WMBoldSystemFontOfSize(scr, 24);
|
||||
WPrefs.nameL = WMCreateLabel(WPrefs.banner);
|
||||
WMSetLabelTextAlignment(WPrefs.nameL, WACenter);
|
||||
WMResizeWidget(WPrefs.nameL, FRAME_WIDTH-20, 30);
|
||||
WMMoveWidget(WPrefs.nameL, 10, 25);
|
||||
WMSetLabelFont(WPrefs.nameL, font);
|
||||
WMSetLabelText(WPrefs.nameL, "WindowMaker Preferences Utility");
|
||||
WMReleaseFont(font);
|
||||
|
||||
WPrefs.versionL = WMCreateLabel(WPrefs.banner);
|
||||
WMResizeWidget(WPrefs.versionL, FRAME_WIDTH-20, 20);
|
||||
WMMoveWidget(WPrefs.versionL, 10, 65);
|
||||
WMSetLabelTextAlignment(WPrefs.versionL, WACenter);
|
||||
sprintf(buffer, _("Version %s for WindowMaker %s"), WVERSION, WMVERSION);
|
||||
WMSetLabelText(WPrefs.versionL, buffer);
|
||||
|
||||
WPrefs.statusL = WMCreateLabel(WPrefs.banner);
|
||||
WMResizeWidget(WPrefs.statusL, FRAME_WIDTH-20, 60);
|
||||
WMMoveWidget(WPrefs.statusL, 10, 100);
|
||||
WMSetLabelTextAlignment(WPrefs.statusL, WACenter);
|
||||
WMSetLabelText(WPrefs.statusL, _("Starting..."));
|
||||
|
||||
WPrefs.creditsL = WMCreateLabel(WPrefs.banner);
|
||||
WMResizeWidget(WPrefs.creditsL, FRAME_WIDTH-20, 40);
|
||||
WMMoveWidget(WPrefs.creditsL, 10, FRAME_HEIGHT-40);
|
||||
WMSetLabelTextAlignment(WPrefs.creditsL, WACenter);
|
||||
WMSetLabelText(WPrefs.creditsL, _("Programming/Design: Alfredo K. Kojima\n"
|
||||
"Artwork: Marco van Hylckama Vlieg"));
|
||||
|
||||
|
||||
WMMapSubwidgets(WPrefs.win);
|
||||
|
||||
WMUnmapWidget(WPrefs.undosBtn);
|
||||
WMUnmapWidget(WPrefs.undoBtn);
|
||||
WMUnmapWidget(WPrefs.saveBtn);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
showPanel(Panel *panel)
|
||||
{
|
||||
PanelRec *rec = (PanelRec*)panel;
|
||||
|
||||
if (!(rec->callbacks.flags & INITIALIZED_PANEL)) {
|
||||
(*rec->callbacks.createWidgets)(panel);
|
||||
rec->callbacks.flags |= INITIALIZED_PANEL;
|
||||
}
|
||||
|
||||
WMSetWindowTitle(WPrefs.win, rec->sectionName);
|
||||
|
||||
WMMapWidget(rec->frame);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
hidePanel(Panel *panel)
|
||||
{
|
||||
PanelRec *rec = (PanelRec*)panel;
|
||||
|
||||
WMUnmapWidget(rec->frame);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
savePanelData(Panel *panel)
|
||||
{
|
||||
PanelRec *rec = (PanelRec*)panel;
|
||||
|
||||
if (rec->callbacks.updateDomain) {
|
||||
(*rec->callbacks.updateDomain)(panel);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
changeSection(WMWidget *self, void *data)
|
||||
{
|
||||
if (WPrefs.banner) {
|
||||
WMDestroyWidget(WPrefs.banner);
|
||||
WPrefs.banner = NULL;
|
||||
/* WMMapWidget(WPrefs.undosBtn);
|
||||
WMMapWidget(WPrefs.undoBtn);
|
||||
*/
|
||||
WMMapWidget(WPrefs.saveBtn);
|
||||
}
|
||||
|
||||
showPanel(data);
|
||||
|
||||
if (WPrefs.currentPanel)
|
||||
hidePanel(WPrefs.currentPanel);
|
||||
WPrefs.currentPanel = data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
char*
|
||||
LocateImage(char *name)
|
||||
{
|
||||
char *path;
|
||||
char *tmp = wmalloc(strlen(name)+8);
|
||||
|
||||
if (TIFFOK) {
|
||||
sprintf(tmp, "%s.tiff", name);
|
||||
path = WMPathForResourceOfType(tmp, "tiff");
|
||||
} else {
|
||||
sprintf(tmp, "%s.xpm", name);
|
||||
path = WMPathForResourceOfType(tmp, "xpm");
|
||||
}
|
||||
free(tmp);
|
||||
if (!path) {
|
||||
wwarning(_("could not locate image file %s\n"), name);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AddSection(Panel *panel, char *iconFile)
|
||||
{
|
||||
WMButton *bPtr;
|
||||
WMPixmap *icon;
|
||||
RColor color;
|
||||
char *iconPath;
|
||||
|
||||
assert(WPrefs.sectionCount < MAX_SECTIONS);
|
||||
|
||||
iconPath = LocateImage(iconFile);
|
||||
|
||||
bPtr = WMCreateCustomButton(WPrefs.buttonF, WBBStateLightMask
|
||||
|WBBStateChangeMask);
|
||||
WMResizeWidget(bPtr, 64, 64);
|
||||
WMMoveWidget(bPtr, WPrefs.sectionCount*64, 0);
|
||||
WMSetButtonImagePosition(bPtr, WIPImageOnly);
|
||||
WMSetButtonAction(bPtr, changeSection, panel);
|
||||
WMHangData(bPtr, panel);
|
||||
|
||||
color.red = 0xae;
|
||||
color.green = 0xaa;
|
||||
color.blue = 0xae;
|
||||
color.alpha = 0;
|
||||
if (iconPath) {
|
||||
icon = WMCreateBlendedPixmapFromFile(WMWidgetScreen(WPrefs.win),
|
||||
iconPath, &color);
|
||||
if (!icon)
|
||||
wwarning(_("could not load icon file %s"), iconPath);
|
||||
} else {
|
||||
icon = NULL;
|
||||
}
|
||||
|
||||
WMSetButtonImage(bPtr, icon);
|
||||
|
||||
if (icon)
|
||||
WMReleasePixmap(icon);
|
||||
|
||||
color.red = 0xff;
|
||||
color.green = 0xff;
|
||||
color.blue = 0xff;
|
||||
color.alpha = 0;
|
||||
if (iconPath) {
|
||||
icon = WMCreateBlendedPixmapFromFile(WMWidgetScreen(WPrefs.win),
|
||||
iconPath, &color);
|
||||
if (!icon)
|
||||
wwarning(_("could not load icon file %s"), iconPath);
|
||||
} else {
|
||||
icon = NULL;
|
||||
}
|
||||
|
||||
WMSetButtonAltImage(bPtr, icon);
|
||||
|
||||
if (icon)
|
||||
WMReleasePixmap(icon);
|
||||
|
||||
WMMapWidget(bPtr);
|
||||
|
||||
WPrefs.sectionB[WPrefs.sectionCount] = bPtr;
|
||||
|
||||
if (WPrefs.sectionCount > 0) {
|
||||
WMGroupButtons(WPrefs.sectionB[0], bPtr);
|
||||
}
|
||||
|
||||
WPrefs.sectionCount++;
|
||||
|
||||
WMResizeWidget(WPrefs.buttonF, WPrefs.sectionCount*64, 64);
|
||||
|
||||
free(iconPath);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Initialize(WMScreen *scr)
|
||||
{
|
||||
char **list;
|
||||
int i;
|
||||
char *path;
|
||||
WMPixmap *icon;
|
||||
|
||||
|
||||
list = RSupportedFileFormats();
|
||||
for (i=0; list[i]!=NULL; i++) {
|
||||
if (strcmp(list[i], "TIFF")==0) {
|
||||
TIFFOK = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
RFreeStringList(list);
|
||||
|
||||
if (TIFFOK)
|
||||
path = WMPathForResourceOfType("WPrefs.tiff", NULL);
|
||||
else
|
||||
path = WMPathForResourceOfType("WPrefs.xpm", NULL);
|
||||
if (path) {
|
||||
RImage *tmp;
|
||||
|
||||
tmp = RLoadImage(WMScreenRContext(scr), path, 0);
|
||||
if (!tmp) {
|
||||
wwarning("could not load image file %s:%s", path, RErrorString);
|
||||
} else {
|
||||
icon = WMCreatePixmapFromRImage(scr, tmp, 0);
|
||||
RDestroyImage(tmp);
|
||||
if (icon) {
|
||||
WMSetApplicationIconImage(scr, icon);
|
||||
WMReleasePixmap(icon);
|
||||
}
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
memset(&WPrefs, 0, sizeof(_WPrefs));
|
||||
createMainWindow(scr);
|
||||
|
||||
WMRealizeWidget(WPrefs.win);
|
||||
WMMapWidget(WPrefs.win);
|
||||
XFlush(WMScreenDisplay(scr));
|
||||
WMSetLabelText(WPrefs.statusL, _("Loading WindowMaker configuration files..."));
|
||||
XFlush(WMScreenDisplay(scr));
|
||||
loadConfigurations(scr, WPrefs.win);
|
||||
|
||||
WMSetLabelText(WPrefs.statusL, _("Initializing configuration panels..."));
|
||||
|
||||
InitWindowHandling(scr, WPrefs.win);
|
||||
InitFocus(scr, WPrefs.win);
|
||||
InitMenuPreferences(scr, WPrefs.win);
|
||||
InitIcons(scr, WPrefs.win);
|
||||
InitPreferences(scr, WPrefs.win);
|
||||
|
||||
InitPaths(scr, WPrefs.win);
|
||||
InitWorkspace(scr, WPrefs.win);
|
||||
InitConfigurations(scr, WPrefs.win);
|
||||
InitMenu(scr, WPrefs.win);
|
||||
#ifdef not_yet_fully_implemented
|
||||
InitKeyboardSettings(scr, WPrefs.win);
|
||||
#endif
|
||||
InitKeyboardShortcuts(scr, WPrefs.win);
|
||||
InitMouseSettings(scr, WPrefs.win);
|
||||
#ifdef not_yet_fully_implemented
|
||||
InitTextureAndColor(scr, WPrefs.win);
|
||||
InitText(scr, WPrefs.win);
|
||||
#endif
|
||||
InitExpert(scr, WPrefs.win);
|
||||
|
||||
WMRealizeWidget(WPrefs.scrollV);
|
||||
|
||||
WMSetLabelText(WPrefs.statusL, "This program is still under development. Backup your ~/GNUstep/Defaults directory, before using it.");
|
||||
}
|
||||
|
||||
|
||||
WMWindow*
|
||||
GetWindow(Panel *panel)
|
||||
{
|
||||
return WPrefs.win;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
loadConfigurations(WMScreen *scr, WMWindow *mainw)
|
||||
{
|
||||
proplist_t db, gdb;
|
||||
char *path;
|
||||
FILE *file;
|
||||
char buffer[1024];
|
||||
char mbuf[1024];
|
||||
int v1, v2, v3;
|
||||
|
||||
path = wdefaultspathfordomain("WindowMaker");
|
||||
|
||||
db = PLGetProplistWithPath(path);
|
||||
if (db) {
|
||||
if (!PLIsDictionary(db)) {
|
||||
PLRelease(db);
|
||||
db = NULL;
|
||||
sprintf(mbuf, _("WindowMaker domain (%s) is corrupted!"), path);
|
||||
WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL);
|
||||
}
|
||||
} else {
|
||||
sprintf(mbuf, _("Could not load WindowMaker domain (%s) from defaults database."),
|
||||
path);
|
||||
WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL);
|
||||
}
|
||||
free(path);
|
||||
|
||||
file = popen("wmaker -version", "r");
|
||||
if (!file || !fgets(buffer, 1023, file)) {
|
||||
wsyserror(_("could not extract version information from WindowMaker"));
|
||||
wfatal(_("Make sure WindowMaker is in your search path."));
|
||||
|
||||
WMRunAlertPanel(scr, mainw, _("Error"),
|
||||
_("Could not extract version from WindowMaker. Make sure it is correctly installed."),
|
||||
_("OK"), NULL, NULL);
|
||||
exit(1);
|
||||
}
|
||||
if (file)
|
||||
pclose(file);
|
||||
|
||||
if (sscanf(buffer, "WindowMaker %i.%i.%i",&v1,&v2,&v3)!=3) {
|
||||
WMRunAlertPanel(scr, mainw, _("Error"),
|
||||
_("Could not extract version from WindowMaker. Make sure it is correctly installed."),
|
||||
_("OK"), NULL, NULL);
|
||||
exit(1);
|
||||
}
|
||||
if (v1 == 0 && (v2 < 18 || v3 < 0)) {
|
||||
sprintf(mbuf, _("WPrefs only supports WindowMaker 0.18.0 or newer.\n"
|
||||
"The version installed is %i.%i.%i\n"), v1, v2, v3);
|
||||
WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL);
|
||||
exit(1);
|
||||
|
||||
}
|
||||
if (v1 > 1 || (v1 == 1 && (v2 > 0))) {
|
||||
sprintf(mbuf, _("WindowMaker %i.%i.%i, which is installed in your system, is not fully supported by this version of WPrefs."),
|
||||
v1, v2, v3);
|
||||
WMRunAlertPanel(scr, mainw, _("Warning"), mbuf, _("OK"), NULL, NULL);
|
||||
}
|
||||
|
||||
file = popen("wmaker -global_defaults_path", "r");
|
||||
if (!file || !fgets(buffer, 1023, file)) {
|
||||
wsyserror(_("could not run \"wmaker -global_defaults_path\"."));
|
||||
exit(1);
|
||||
}
|
||||
if (file)
|
||||
pclose(file);
|
||||
|
||||
gdb = PLGetProplistWithPath(buffer);
|
||||
if (gdb) {
|
||||
if (!PLIsDictionary(gdb)) {
|
||||
PLRelease(gdb);
|
||||
gdb = NULL;
|
||||
sprintf(mbuf, _("WindowMaker domain (%s) is corrupted!"), buffer);
|
||||
WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL);
|
||||
}
|
||||
} else {
|
||||
sprintf(mbuf, _("Could not load global WindowMaker domain (%s)."),
|
||||
buffer);
|
||||
WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL);
|
||||
}
|
||||
|
||||
if (!db) {
|
||||
db = PLMakeDictionaryFromEntries(NULL, NULL, NULL);
|
||||
}
|
||||
if (!gdb) {
|
||||
gdb = PLMakeDictionaryFromEntries(NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
GlobalDB = gdb;
|
||||
|
||||
WindowMakerDB = db;
|
||||
}
|
||||
|
||||
|
||||
proplist_t
|
||||
GetObjectForKey(char *defaultName)
|
||||
{
|
||||
proplist_t object = NULL;
|
||||
proplist_t key = PLMakeString(defaultName);
|
||||
|
||||
object = PLGetDictionaryEntry(WindowMakerDB, key);
|
||||
if (!object)
|
||||
object = PLGetDictionaryEntry(GlobalDB, key);
|
||||
|
||||
PLRelease(key);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
SetObjectForKey(proplist_t object, char *defaultName)
|
||||
{
|
||||
proplist_t key = PLMakeString(defaultName);
|
||||
|
||||
PLInsertDictionaryEntry(WindowMakerDB, key, object);
|
||||
PLRelease(key);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
RemoveObjectForKey(char *defaultName)
|
||||
{
|
||||
proplist_t key = PLMakeString(defaultName);
|
||||
|
||||
PLRemoveDictionaryEntry(WindowMakerDB, key);
|
||||
|
||||
PLRelease(key);
|
||||
}
|
||||
|
||||
|
||||
char*
|
||||
GetStringForKey(char *defaultName)
|
||||
{
|
||||
proplist_t val;
|
||||
|
||||
val = GetObjectForKey(defaultName);
|
||||
|
||||
if (!val)
|
||||
return NULL;
|
||||
|
||||
if (!PLIsString(val))
|
||||
return NULL;
|
||||
|
||||
return PLGetString(val);
|
||||
}
|
||||
|
||||
|
||||
|
||||
proplist_t
|
||||
GetArrayForKey(char *defaultName)
|
||||
{
|
||||
proplist_t val;
|
||||
|
||||
val = GetObjectForKey(defaultName);
|
||||
|
||||
if (!val)
|
||||
return NULL;
|
||||
|
||||
if (!PLIsArray(val))
|
||||
return NULL;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
proplist_t
|
||||
GetDictionaryForKey(char *defaultName)
|
||||
{
|
||||
proplist_t val;
|
||||
|
||||
val = GetObjectForKey(defaultName);
|
||||
|
||||
if (!val)
|
||||
return NULL;
|
||||
|
||||
if (!PLIsDictionary(val))
|
||||
return NULL;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
GetIntegerForKey(char *defaultName)
|
||||
{
|
||||
proplist_t val;
|
||||
char *str;
|
||||
int value;
|
||||
|
||||
val = GetObjectForKey(defaultName);
|
||||
|
||||
if (!val)
|
||||
return 0;
|
||||
|
||||
if (!PLIsString(val))
|
||||
return 0;
|
||||
|
||||
str = PLGetString(val);
|
||||
if (!str)
|
||||
return 0;
|
||||
|
||||
if (sscanf(str, "%i", &value)!=1)
|
||||
return 0;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
Bool
|
||||
GetBoolForKey(char *defaultName)
|
||||
{
|
||||
int value;
|
||||
char *str;
|
||||
|
||||
str = GetStringForKey(defaultName);
|
||||
|
||||
if (!str)
|
||||
return False;
|
||||
|
||||
if (sscanf(str, "%i", &value)==1 && value!=0)
|
||||
return True;
|
||||
|
||||
if (strcasecmp(str, "YES")==0)
|
||||
return True;
|
||||
|
||||
if (strcasecmp(str, "Y")==0)
|
||||
return True;
|
||||
|
||||
return False;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
SetIntegerForKey(int value, char *defaultName)
|
||||
{
|
||||
proplist_t object;
|
||||
char buffer[128];
|
||||
|
||||
sprintf(buffer, "%i", value);
|
||||
object = PLMakeString(buffer);
|
||||
|
||||
SetObjectForKey(object, defaultName);
|
||||
PLRelease(object);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
SetStringForKey(char *value, char *defaultName)
|
||||
{
|
||||
proplist_t object;
|
||||
|
||||
object = PLMakeString(value);
|
||||
|
||||
SetObjectForKey(object, defaultName);
|
||||
PLRelease(object);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
SetBoolForKey(Bool value, char *defaultName)
|
||||
{
|
||||
static proplist_t yes = NULL, no = NULL;
|
||||
|
||||
if (!yes) {
|
||||
yes = PLMakeString("YES");
|
||||
no = PLMakeString("NO");
|
||||
}
|
||||
|
||||
SetObjectForKey(value ? yes : no, defaultName);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
SetSpeedForKey(int speed, char *defaultName)
|
||||
{
|
||||
char *str;
|
||||
|
||||
switch (speed) {
|
||||
case 0:
|
||||
str = "ultraslow";
|
||||
break;
|
||||
case 1:
|
||||
str = "slow";
|
||||
break;
|
||||
case 2:
|
||||
str = "medium";
|
||||
break;
|
||||
case 3:
|
||||
str = "fast";
|
||||
break;
|
||||
case 4:
|
||||
str = "ultrafast";
|
||||
break;
|
||||
default:
|
||||
str = NULL;
|
||||
}
|
||||
|
||||
if (str)
|
||||
SetStringForKey(str, defaultName);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
GetSpeedForKey(char *defaultName)
|
||||
{
|
||||
char *str;
|
||||
int i;
|
||||
|
||||
str = GetStringForKey(defaultName);
|
||||
if (strcasecmp(str, "ultraslow")==0)
|
||||
i = 0;
|
||||
else if (strcasecmp(str, "slow")==0)
|
||||
i = 1;
|
||||
else if (strcasecmp(str, "medium")==0)
|
||||
i = 2;
|
||||
else if (strcasecmp(str, "fast")==0)
|
||||
i = 3;
|
||||
else if (strcasecmp(str, "ultrafast")==0)
|
||||
i = 4;
|
||||
else {
|
||||
wwarning(_("bad speed value for option %s\n. Using default Medium"),
|
||||
defaultName);
|
||||
i = 2;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
119
WPrefs.app/WPrefs.h
Normal file
119
WPrefs.app/WPrefs.h
Normal file
@@ -0,0 +1,119 @@
|
||||
/* WPrefs.h- general definitions
|
||||
*
|
||||
* WPrefs - WindowMaker 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.
|
||||
*/
|
||||
|
||||
#ifndef WPREFS_H_
|
||||
#define WPREFS_H_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#include <proplist.h>
|
||||
|
||||
#include <wraster.h>
|
||||
|
||||
#include <WINGs.h>
|
||||
#include <WUtil.h>
|
||||
|
||||
|
||||
#define WVERSION "0.6"
|
||||
#define WMVERSION "0.20.x"
|
||||
|
||||
|
||||
typedef struct _Panel Panel;
|
||||
|
||||
typedef struct {
|
||||
unsigned flags; /* reserved for WPrefs.c Don't access it */
|
||||
|
||||
void (*createWidgets)(Panel*); /* called when showing for first time */
|
||||
void (*updateDomain)(Panel*); /* save the changes to the dictionary */
|
||||
Bool (*requiresRestart)(Panel*); /* return True if some static option was changed */
|
||||
void (*undoChanges)(Panel*); /* reset values to those in the dictionary */
|
||||
} CallbackRec;
|
||||
|
||||
|
||||
/* all Panels must start with the following layout */
|
||||
typedef struct PanelRec {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName; /* section name to display in titlebar */
|
||||
|
||||
CallbackRec callbacks;
|
||||
} PanelRec;
|
||||
|
||||
|
||||
void AddSection(Panel *panel, char *iconFile);
|
||||
|
||||
char *LocateImage(char *name);
|
||||
|
||||
WMWindow *GetWindow(Panel *panel);
|
||||
|
||||
/* manipulate the dictionary for the WindowMaker domain */
|
||||
|
||||
proplist_t GetObjectForKey(char *defaultName);
|
||||
|
||||
void SetObjectForKey(proplist_t object, char *defaultName);
|
||||
|
||||
void RemoveObjectForKey(char *defaultName);
|
||||
|
||||
char *GetStringForKey(char *defaultName);
|
||||
|
||||
int GetIntegerForKey(char *defaultName);
|
||||
|
||||
Bool GetBoolForKey(char *defaultName);
|
||||
|
||||
int GetSpeedForKey(char *defaultName);
|
||||
|
||||
void SetIntegerForKey(int value, char *defaultName);
|
||||
|
||||
void SetStringForKey(char *value, char *defaultName);
|
||||
|
||||
void SetBoolForKey(Bool value, char *defaultName);
|
||||
|
||||
void SetSpeedForKey(int speed, char *defaultName);
|
||||
|
||||
#define FRAME_TOP 105
|
||||
#define FRAME_LEFT -2
|
||||
#define FRAME_WIDTH 524
|
||||
#define FRAME_HEIGHT 235
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Needed for HAVE_LIBINTL_H
|
||||
*/
|
||||
#include "../src/config.h"
|
||||
|
||||
#if HAVE_LIBINTL_H && I18N
|
||||
# include <libintl.h>
|
||||
# define _(text) gettext(text)
|
||||
#else
|
||||
# define _(text) (text)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
WPrefs.app/WPrefs.tiff
Normal file
BIN
WPrefs.app/WPrefs.tiff
Normal file
Binary file not shown.
237
WPrefs.app/WPrefs.xpm
Normal file
237
WPrefs.app/WPrefs.xpm
Normal file
@@ -0,0 +1,237 @@
|
||||
/* XPM */
|
||||
static char * image_name[] = {
|
||||
"45 45 189 2",
|
||||
" c None",
|
||||
". c #186175D60000",
|
||||
"X c #000000000000",
|
||||
"o c #082004100820",
|
||||
"O c #082008200820",
|
||||
"+ c #4924A28930C2",
|
||||
"@ c #514451445144",
|
||||
"# c #492449244924",
|
||||
"$ c #49244D344924",
|
||||
"% c #208179E70820",
|
||||
"& c #104010401040",
|
||||
"* c #28A22CB228A2",
|
||||
"= c #38E338E338E3",
|
||||
"- c #28A228A228A2",
|
||||
"; c #30C22CB230C2",
|
||||
": c #186114511861",
|
||||
"> c #514455555965",
|
||||
", c #10400C301040",
|
||||
"< c #186118611861",
|
||||
"1 c #208120812081",
|
||||
"2 c #2081249228A2",
|
||||
"3 c #186171C60000",
|
||||
"4 c #28A282071040",
|
||||
"5 c #28A27DF70820",
|
||||
"6 c #28A2249228A2",
|
||||
"7 c #30C230C230C2",
|
||||
"8 c #410341034103",
|
||||
"9 c #30C292482081",
|
||||
"0 c #30C234D338E3",
|
||||
"q c #79E77DF78617",
|
||||
"w c #C71BC71BC71B",
|
||||
"e c #71C675D671C6",
|
||||
"r c #965892489658",
|
||||
"t c #FFFFFFFFFFFF",
|
||||
"y c #EFBEEFBEEFBE",
|
||||
"u c #5144AAAA38E3",
|
||||
"i c #A699FFFF8E38",
|
||||
"p c #596559656185",
|
||||
"a c #AEBA10401040",
|
||||
"s c #E79D14511861",
|
||||
"d c #208104100000",
|
||||
"f c #FFFF61856185",
|
||||
"g c #F7DE2CB22081",
|
||||
"h c #C71BAAAAA699",
|
||||
"j c #DF7D14511861",
|
||||
"k c #71C608200820",
|
||||
"l c #FFFF30C230C2",
|
||||
"z c #E79D20811861",
|
||||
"x c #79E714511861",
|
||||
"c c #28A204100000",
|
||||
"v c #EFBE18611861",
|
||||
"b c #79E70C300820",
|
||||
"n c #FFFFE38DE79D",
|
||||
"m c #FFFF28A228A2",
|
||||
"M c #E79D18611861",
|
||||
"N c #8E381C711861",
|
||||
"B c #596559655965",
|
||||
"V c #861749240820",
|
||||
"C c #D75C24921040",
|
||||
"Z c #B6DA10401040",
|
||||
"A c #B6DA14511040",
|
||||
"S c #10403CF30000",
|
||||
"D c #69A6C30B5144",
|
||||
"F c #CF3C96585144",
|
||||
"G c #EFBE38E328A2",
|
||||
"H c #BEFB18611861",
|
||||
"J c #410375D638E3",
|
||||
"K c #30C28E381861",
|
||||
"L c #38E33CF34103",
|
||||
"P c #A69910401040",
|
||||
"I c #8E380C300820",
|
||||
"U c #CF3C14511040",
|
||||
"Y c #FFFF59655965",
|
||||
"T c #D75C41034103",
|
||||
"R c #965820811861",
|
||||
"E c #DF7D20812081",
|
||||
"W c #596508200820",
|
||||
"Q c #38E304100820",
|
||||
"! c #FFFF34D338E3",
|
||||
"~ c #8E3838E338E3",
|
||||
"^ c #6185492428A2",
|
||||
"/ c #F7DE20812081",
|
||||
"( c #8E388A288E38",
|
||||
") c #30C204100000",
|
||||
"_ c #104000000000",
|
||||
"` c #FFFFD34CD75C",
|
||||
"' c #FFFF20812081",
|
||||
"] c #28A220812081",
|
||||
"[ c #69A6A2895965",
|
||||
"{ c #F7DE24922081",
|
||||
"} c #492414511040",
|
||||
"| c #AEBAAEBAAEBA",
|
||||
" . c #86170C300820",
|
||||
".. c #69A608200820",
|
||||
"X. c #104059650000",
|
||||
"o. c #FFFF8A288E38",
|
||||
"O. c #F7DE38E338E3",
|
||||
"+. c #9E79EFBE8617",
|
||||
"@. c #71C614511040",
|
||||
"#. c #861786178617",
|
||||
"$. c #965810401040",
|
||||
"%. c #208151441040",
|
||||
"&. c #FFFF45144103",
|
||||
"*. c #D75C34D338E3",
|
||||
"=. c #FFFF49244924",
|
||||
"-. c #9E791C712081",
|
||||
";. c #618565956185",
|
||||
":. c #492404100820",
|
||||
">. c #38E35D7528A2",
|
||||
",. c #C71BC30BC71B",
|
||||
"<. c #8617E38D69A6",
|
||||
"1. c #FFFF249228A2",
|
||||
"2. c #69A628A228A2",
|
||||
"3. c #FFFF65956185",
|
||||
"4. c #C71B20812081",
|
||||
"5. c #28A26DB60000",
|
||||
"6. c #FFFF18611861",
|
||||
"7. c #E79D1C711861",
|
||||
"8. c #30C2492428A2",
|
||||
"9. c #FFFFF3CEEFBE",
|
||||
"0. c #B6DAB6DAB6DA",
|
||||
"q. c #FFFFA2899E79",
|
||||
"w. c #E79D20812081",
|
||||
"e. c #51445D750820",
|
||||
"r. c #F7DE1C711861",
|
||||
"t. c #618549240820",
|
||||
"y. c #18616DB60000",
|
||||
"u. c #9E7941031040",
|
||||
"i. c #A69934D31040",
|
||||
"p. c #186120811040",
|
||||
"a. c #BEFBC71B69A6",
|
||||
"s. c #AEBA92485144",
|
||||
"d. c #D75C7DF74924",
|
||||
"f. c #CF3C618538E3",
|
||||
"g. c #AEBAF3CE8617",
|
||||
"h. c #104018610820",
|
||||
"j. c #F7DE1C712081",
|
||||
"k. c #18610C300820",
|
||||
"l. c #AEBAA289A699",
|
||||
"z. c #BEFB45144103",
|
||||
"x. c #618561856185",
|
||||
"c. c #104004100820",
|
||||
"v. c #EFBE28A228A2",
|
||||
"b. c #69A610401040",
|
||||
"n. c #79E718611861",
|
||||
"m. c #51442CB228A2",
|
||||
"M. c #79E779E779E7",
|
||||
"N. c #F7DE30C230C2",
|
||||
"B. c #F7DE18611861",
|
||||
"V. c #410304100820",
|
||||
"C. c #E79D34D330C2",
|
||||
"Z. c #C71B18611861",
|
||||
"A. c #F7DE28A22081",
|
||||
"S. c #DF7DA289A699",
|
||||
"D. c #F7DE28A228A2",
|
||||
"F. c #E79D30C230C2",
|
||||
"G. c #D75CD34CD75C",
|
||||
"H. c #EFBE41034103",
|
||||
"J. c #C71B14511040",
|
||||
"K. c #000014510000",
|
||||
"L. c #514408200820",
|
||||
"P. c #C71B59655965",
|
||||
"I. c #B6DA249228A2",
|
||||
"U. c #492410401040",
|
||||
"Y. c #208110401040",
|
||||
"T. c #082010400820",
|
||||
"R. c #FFFF7DF779E7",
|
||||
"E. c #618514511040",
|
||||
"W. c #AEBA45144103",
|
||||
"Q. c #000008200000",
|
||||
"!. c #DF7D2CB22081",
|
||||
"~. c #59655D755965",
|
||||
"^. c #71C671C671C6",
|
||||
"/. c #AEBAAAAAAEBA",
|
||||
"(. c #69A66DB671C6",
|
||||
"). c #28A282070820",
|
||||
"_. c #71C6CB2B5965",
|
||||
"`. c #A699FBEE8E38",
|
||||
"'. c #69A6C71B5144",
|
||||
"]. c #E79DE79DE79D",
|
||||
"[. c #FFFFFBEEFFFF",
|
||||
"{. c #BEFBBEFBBEFB",
|
||||
"}. c #8E388E389658",
|
||||
"|. c #A699A699A699",
|
||||
" X c #9E79A2899E79",
|
||||
".X c #DF7DDF7DDF7D",
|
||||
"XX c #F7DEF7DEF7DE",
|
||||
"oX c #861782078617",
|
||||
"OX c #71C6D34C5965",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . ",
|
||||
". . . . . . ",
|
||||
". . . . . . ",
|
||||
". . X o X O + @ # # # # # # $ % X X . . ",
|
||||
". . & * $ = - . X X X X X X X X . ; ; o . . ",
|
||||
". . : > - , X X . X X X X X X X X . X o O , X . . ",
|
||||
". . < 1 , X X X X . X X X X X X X X . X X X o X 2 . . ",
|
||||
". . . . . . . . 3 % 4 . . . . . . . . . . . . . . . . . . . . . % 5 . . . . . . . . . . . ",
|
||||
". % 2 X X X X X X X . X X X X X X X X . X 6 7 ; 7 ; = 8 9 0 0 0 0 . ",
|
||||
". < % X X X X X X X X . X X X X X X X X . X q w w w w w e % X X X X . ",
|
||||
". < 6 . X X X X X X X X . X X X X X X X X . X r t t t t t y u X X X X . ",
|
||||
". X o X . X X X X X X X X . X X X X X X X X . X r t t t t t t i p X X X . ",
|
||||
". O : X . X X X X a s d X . X X X X X X X X . X r t t t t t f g h : X X . ",
|
||||
". X < X X . X X X X s j k X . X X X X X X X X . X r t t t t t l z x > X X . ",
|
||||
". X O X X . X X X c v j b X . X X X X X X X X . X r t t t t n m M N B & X . ",
|
||||
". . . . . . . . . . . . V C Z A S . . . . . . . . . . . D i i i i F G A H J K . . . . . . ",
|
||||
". L X X X . X X X Z P I U X . X X X X X X X X . X r t t t t Y T R E 8 @ X . ",
|
||||
". : X X X . X X X j W Q v X . X X X X X X X X . X r t t t t ! ~ ^ / ; ( , . ",
|
||||
". X X X X . X X ) v _ X v Q . X X X X X X X X . X r t t t ` ' ] [ { } | : . ",
|
||||
". X X X X . X X .U X X j ..X.X X X X X X X X . X r t t t o.O., +.! @.#.: . ",
|
||||
". X X X X . X X U Z X X U $.%.; * ; * * ; ; - K ; | t t t &.*.; i =.-.;.< . ",
|
||||
". X X X X . X X v :.X X a H >.w ,.w w w w w w <.w y t t t 1.2.$ i 3.4.# : . ",
|
||||
". X X X ) 5.X ) 6.X X X ..7.8.t t t t t t t t i t ` 9.t ` 6., 0.i q.w.7 : . ",
|
||||
". . . . % . e.r.t.y.u.i.X . . 5.r.p.i i i i i i i i i a.{ s.+.d.f.X i i g.r.h.5 . . . . . ",
|
||||
". = X v v s _ U .X X X X j.k.t t t t t t t t i m ' s l.&.z.x.t i t ' c.X . ",
|
||||
". 6 W 6.Q 6...s c X X X X v.b.y t t t t t t t i 6.} 6.n.m m.M.t i t N...X . ",
|
||||
"r.B.6.6.6.6.V.X 7.v U X X X X X C.Z.6.1.m m m ' { { A.S.X D.v F.: G.t i t H.J.6.v v v v . ",
|
||||
"K.X X X X X X X u.v L.X X X X X P.v I.L.U.} } Y., & T.: ,.R.v E.7 t t i y W.v P L.Q Q Q Q.",
|
||||
". & , X . X X X X X X X r !., ~.t t t t t t i t t t ^.& /.t t i ,.: U X X X X X X.",
|
||||
". o < X . X X X X X X X r i 7 t t t t t t t i t t t t t t t t i (.X X X . ",
|
||||
". X X . X X X X X X X r i t t t t t t t t i t t t t t t t t D , X X X . ",
|
||||
". . . . 3 3 3 . . % ).).).).).)._.i i i i i i i i i i i i i i i i `.'.% . . . . . . . . . ",
|
||||
". X X X X . - r | | | | | ].i t t t t t t t t i t t t t t [.{.7 . X X X X . ",
|
||||
". X X X X . , $ w t t t t t i t t t t t t t t i t t t t t }.7 X . X X X X . ",
|
||||
". X X X X . X X 1 |.t t t t i t t t t t t t t i t t t ].}., X X . X X X X . ",
|
||||
". X X X X . X X X X 6 X.XXXi t t t t t t t t i XX.X X6 X X X X . X X X X . ",
|
||||
". X X X X . X X X X X X = oXOXw w t t t t w w OXoX= X X X X X X . X X X X . ",
|
||||
". X X X X . X X X X X X X X % 7 ; ;.;.;.;.; ; % X X X X X X X X . X X X X . ",
|
||||
". X X X X 3 X X X X X X X X . X X X X X X X X . X X X X X X X X . X X X X . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . ",
|
||||
". . . . . . ",
|
||||
". . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "};
|
||||
357
WPrefs.app/WindowHandling.c
Normal file
357
WPrefs.app/WindowHandling.c
Normal file
@@ -0,0 +1,357 @@
|
||||
/* WindowHandling.c- options for handling windows
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMFrame *placF;
|
||||
WMPopUpButton *placP;
|
||||
WMLabel *porigL;
|
||||
WMLabel *porigvL;
|
||||
WMFrame *porigF;
|
||||
WMLabel *porigW;
|
||||
|
||||
WMSlider *vsli;
|
||||
WMSlider *hsli;
|
||||
|
||||
WMFrame *maxiF;
|
||||
WMButton *miconB;
|
||||
WMButton *mdockB;
|
||||
|
||||
WMFrame *opaqF;
|
||||
WMButton *opaqB;
|
||||
|
||||
WMFrame *tranF;
|
||||
WMButton *tranB;
|
||||
} _Panel;
|
||||
|
||||
|
||||
#define ICON_FILE "whandling"
|
||||
|
||||
#define OPAQUE_MOVE_PIXMAP "opaque"
|
||||
|
||||
#define NON_OPAQUE_MOVE_PIXMAP "nonopaque"
|
||||
|
||||
|
||||
#define THUMB_SIZE 16
|
||||
|
||||
|
||||
static char *placements[] = {
|
||||
"auto",
|
||||
"random",
|
||||
"manual",
|
||||
"cascade"
|
||||
};
|
||||
|
||||
|
||||
static void
|
||||
sliderCallback(WMWidget *w, void *data)
|
||||
{
|
||||
_Panel *panel = (_Panel*)data;
|
||||
int x, y, rx, ry;
|
||||
char buffer[64];
|
||||
int swidth = WMGetSliderMaxValue(panel->hsli);
|
||||
int sheight = WMGetSliderMaxValue(panel->vsli);
|
||||
|
||||
x = WMGetSliderValue(panel->hsli);
|
||||
y = WMGetSliderValue(panel->vsli);
|
||||
|
||||
rx = x*(WMWidgetWidth(panel->porigF)-3)/swidth+2;
|
||||
ry = y*(WMWidgetHeight(panel->porigF)-3)/sheight+2;
|
||||
WMMoveWidget(panel->porigW, rx, ry);
|
||||
|
||||
sprintf(buffer, "(%i,%i)", x, y);
|
||||
WMSetLabelText(panel->porigvL, buffer);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
getPlacement(char *str)
|
||||
{
|
||||
if (strcasecmp(str, "auto")==0 || strcasecmp(str, "smart")==0)
|
||||
return 0;
|
||||
else if (strcasecmp(str, "random")==0)
|
||||
return 3;
|
||||
else if (strcasecmp(str, "manual")==0)
|
||||
return 2;
|
||||
else if (strcasecmp(str, "cascade")==0)
|
||||
return 1;
|
||||
else
|
||||
wwarning(_("bad option value %s in WindowPlacement. Using default value"),
|
||||
str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
char *str;
|
||||
proplist_t arr;
|
||||
int x, y;
|
||||
|
||||
str = GetStringForKey("WindowPlacement");
|
||||
|
||||
WMSetPopUpButtonSelectedItem(panel->placP, getPlacement(str));
|
||||
|
||||
arr = GetObjectForKey("WindowPlaceOrigin");
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
if (arr && (!PLIsArray(arr) || PLGetNumberOfElements(arr)!=2)) {
|
||||
wwarning(_("invalid data in option WindowPlaceOrigin. Using default (0,0)"));
|
||||
} else {
|
||||
if (arr) {
|
||||
x = atoi(PLGetString(PLGetArrayElement(arr, 0)));
|
||||
y = atoi(PLGetString(PLGetArrayElement(arr, 1)));
|
||||
}
|
||||
}
|
||||
|
||||
WMSetSliderValue(panel->hsli, x);
|
||||
WMSetSliderValue(panel->vsli, y);
|
||||
|
||||
sliderCallback(NULL, panel);
|
||||
|
||||
WMSetButtonSelected(panel->tranB, GetBoolForKey("OnTopTransients"));
|
||||
|
||||
WMSetButtonSelected(panel->opaqB, GetBoolForKey("OpaqueMove"));
|
||||
|
||||
WMSetButtonSelected(panel->miconB, GetBoolForKey("NoWindowOverIcons"));
|
||||
|
||||
WMSetButtonSelected(panel->mdockB, GetBoolForKey("NoWindowUnderDock"));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
proplist_t arr;
|
||||
char x[16], y[16];
|
||||
|
||||
SetBoolForKey(WMGetButtonSelected(panel->miconB), "NoWindowOverIcons");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->mdockB), "NoWindowUnderDock");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->opaqB), "OpaqueMove");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->tranB), "OnTopTransients");
|
||||
SetStringForKey(placements[WMGetPopUpButtonSelectedItem(panel->placP)],
|
||||
"WindowPlacement");
|
||||
sprintf(x, "%i", WMGetSliderValue(panel->hsli));
|
||||
sprintf(y, "%i", WMGetSliderValue(panel->vsli));
|
||||
arr = PLMakeArrayFromElements(PLMakeString(x), PLMakeString(y), NULL);
|
||||
SetObjectForKey(arr, "WindowPlaceOrigin");
|
||||
PLRelease(arr);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (Panel*)p;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
WMColor *color;
|
||||
WMPixmap *pixmap;
|
||||
int width, height;
|
||||
int swidth, sheight;
|
||||
char *path;
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
/************** Window Placement ***************/
|
||||
panel->placF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->placF, 270, 150);
|
||||
WMMoveWidget(panel->placF, 20, 15);
|
||||
WMSetFrameTitle(panel->placF, _("Window Placement"));
|
||||
|
||||
panel->placP = WMCreatePopUpButton(panel->placF);
|
||||
WMResizeWidget(panel->placP, 195, 20);
|
||||
WMMoveWidget(panel->placP, 35, 20);
|
||||
WMAddPopUpButtonItem(panel->placP, _("Automatic"));
|
||||
WMAddPopUpButtonItem(panel->placP, _("Random"));
|
||||
WMAddPopUpButtonItem(panel->placP, _("Manual"));
|
||||
WMAddPopUpButtonItem(panel->placP, _("Cascade"));
|
||||
|
||||
panel->porigL = WMCreateLabel(panel->placF);
|
||||
WMResizeWidget(panel->porigL, 118, 32);
|
||||
WMMoveWidget(panel->porigL, 5, 60);
|
||||
WMSetLabelTextAlignment(panel->porigL, WACenter);
|
||||
WMSetLabelText(panel->porigL, _("Placement Origin"));
|
||||
|
||||
panel->porigvL = WMCreateLabel(panel->placF);
|
||||
WMResizeWidget(panel->porigvL, 70, 20);
|
||||
WMMoveWidget(panel->porigvL, 25, 95);
|
||||
WMSetLabelTextAlignment(panel->porigvL, WACenter);
|
||||
|
||||
color = WMCreateRGBColor(scr, 0x5100, 0x5100, 0x7100, True);
|
||||
panel->porigF = WMCreateFrame(panel->placF);
|
||||
WMSetWidgetBackgroundColor(panel->porigF, color);
|
||||
WMReleaseColor(color);
|
||||
WMSetFrameRelief(panel->porigF, WRSunken);
|
||||
|
||||
swidth = WidthOfScreen(DefaultScreenOfDisplay(WMScreenDisplay(scr)));
|
||||
sheight = HeightOfScreen(DefaultScreenOfDisplay(WMScreenDisplay(scr)));
|
||||
|
||||
if (120*sheight/swidth < 80*swidth/sheight) {
|
||||
width = 80*swidth/sheight;
|
||||
height = 80;
|
||||
} else {
|
||||
height = 120*sheight/swidth;
|
||||
width = 120;
|
||||
}
|
||||
WMResizeWidget(panel->porigF, width, height);
|
||||
WMMoveWidget(panel->porigF, 125+(120-width)/2, 45+(80-height)/2);
|
||||
|
||||
panel->porigW = WMCreateLabel(panel->porigF);
|
||||
WMResizeWidget(panel->porigW, THUMB_SIZE, THUMB_SIZE);
|
||||
WMMoveWidget(panel->porigW, 2, 2);
|
||||
WMSetLabelRelief(panel->porigW, WRRaised);
|
||||
|
||||
|
||||
panel->hsli = WMCreateSlider(panel->placF);
|
||||
WMResizeWidget(panel->hsli, width, 12);
|
||||
WMMoveWidget(panel->hsli, 125+(120-width)/2, 45+(80-height)/2+height+2);
|
||||
WMSetSliderAction(panel->hsli, sliderCallback, panel);
|
||||
WMSetSliderMinValue(panel->hsli, 0);
|
||||
WMSetSliderMaxValue(panel->hsli, swidth);
|
||||
|
||||
panel->vsli = WMCreateSlider(panel->placF);
|
||||
WMResizeWidget(panel->vsli, 12, height);
|
||||
WMMoveWidget(panel->vsli, 125+(120-width)/2+width+2, 45+(80-height)/2);
|
||||
WMSetSliderAction(panel->vsli, sliderCallback, panel);
|
||||
WMSetSliderMinValue(panel->vsli, 0);
|
||||
WMSetSliderMaxValue(panel->vsli, sheight);
|
||||
|
||||
WMMapSubwidgets(panel->porigF);
|
||||
|
||||
WMMapSubwidgets(panel->placF);
|
||||
|
||||
/************** Opaque Move ***************/
|
||||
panel->opaqF = WMCreateFrame(panel->frame);
|
||||
WMMoveWidget(panel->opaqF, 300, 15);
|
||||
WMResizeWidget(panel->opaqF, 205, 125);
|
||||
WMSetFrameTitle(panel->opaqF, _("Opaque Move"));
|
||||
|
||||
panel->opaqB = WMCreateButton(panel->opaqF, WBTToggle);
|
||||
WMResizeWidget(panel->opaqB, 64, 64);
|
||||
WMMoveWidget(panel->opaqB, 70, 35);
|
||||
WMSetButtonImagePosition(panel->opaqB, WIPImageOnly);
|
||||
|
||||
path = LocateImage(NON_OPAQUE_MOVE_PIXMAP);
|
||||
if (path) {
|
||||
pixmap = WMCreatePixmapFromFile(scr, path);
|
||||
if (pixmap) {
|
||||
WMSetButtonImage(panel->opaqB, pixmap);
|
||||
WMReleasePixmap(pixmap);
|
||||
} else {
|
||||
wwarning(_("could not load icon %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
path = LocateImage(OPAQUE_MOVE_PIXMAP);
|
||||
if (path) {
|
||||
pixmap = WMCreatePixmapFromFile(scr, path);
|
||||
if (pixmap) {
|
||||
WMSetButtonAltImage(panel->opaqB, pixmap);
|
||||
WMReleasePixmap(pixmap);
|
||||
} else {
|
||||
wwarning(_("could not load icon %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
WMMapSubwidgets(panel->opaqF);
|
||||
|
||||
/**************** Account for Icon/Dock ***************/
|
||||
panel->maxiF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->maxiF, 205, 70);
|
||||
WMMoveWidget(panel->maxiF, 300, 145);
|
||||
WMSetFrameTitle(panel->maxiF, _("When maximizing..."));
|
||||
|
||||
panel->miconB = WMCreateSwitchButton(panel->maxiF);
|
||||
WMResizeWidget(panel->miconB, 185, 20);
|
||||
WMMoveWidget(panel->miconB, 10, 20);
|
||||
WMSetButtonText(panel->miconB, _("...do not resize over icons"));
|
||||
|
||||
panel->mdockB = WMCreateSwitchButton(panel->maxiF);
|
||||
WMResizeWidget(panel->mdockB, 185, 20);
|
||||
WMMoveWidget(panel->mdockB, 10, 40);
|
||||
WMSetButtonText(panel->mdockB, _("...do not resize over dock"));
|
||||
|
||||
WMMapSubwidgets(panel->maxiF);
|
||||
|
||||
/**************** Transients On Top ****************/
|
||||
|
||||
panel->tranF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->tranF, 270, 40);
|
||||
WMMoveWidget(panel->tranF, 20, 175);
|
||||
|
||||
panel->tranB = WMCreateSwitchButton(panel->tranF);
|
||||
WMMoveWidget(panel->tranB, 10, 10);
|
||||
WMResizeWidget(panel->tranB, 235, 20);
|
||||
WMSetButtonText(panel->tranB, _("Keep transients above their owners"));
|
||||
|
||||
WMMapSubwidgets(panel->tranF);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
/* show the config data */
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
undo(_Panel *panel)
|
||||
{
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
Panel*
|
||||
InitWindowHandling(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Window Handling Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
panel->callbacks.undoChanges = undo;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
295
WPrefs.app/Workspace.c
Normal file
295
WPrefs.app/Workspace.c
Normal file
@@ -0,0 +1,295 @@
|
||||
/* Workspace.c- workspace options
|
||||
*
|
||||
* WPrefs - WindowMaker 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"
|
||||
|
||||
|
||||
typedef struct _Panel {
|
||||
WMFrame *frame;
|
||||
|
||||
char *sectionName;
|
||||
|
||||
CallbackRec callbacks;
|
||||
|
||||
WMWindow *win;
|
||||
|
||||
WMFrame *navF;
|
||||
WMButton *linkB;
|
||||
WMButton *cyclB;
|
||||
WMButton *newB;
|
||||
WMLabel *linkL;
|
||||
WMLabel *cyclL;
|
||||
WMLabel *newL;
|
||||
|
||||
WMFrame *dockF;
|
||||
WMButton *dockB;
|
||||
WMButton *clipB;
|
||||
} _Panel;
|
||||
|
||||
|
||||
|
||||
#define ICON_FILE "workspace"
|
||||
|
||||
#define ARQUIVO_XIS "xis"
|
||||
#define DONT_LINK_FILE "dontlinkworkspaces"
|
||||
#define CYCLE_FILE "cycleworkspaces"
|
||||
#define ADVANCE_FILE "advancetonewworkspace"
|
||||
#define DOCK_FILE "dock"
|
||||
#define CLIP_FILE "clip"
|
||||
|
||||
|
||||
|
||||
static void
|
||||
createImages(WMScreen *scr, RContext *rc, RImage *xis, char *file,
|
||||
WMPixmap **icon1, WMPixmap **icon2)
|
||||
{
|
||||
RImage *icon;
|
||||
|
||||
*icon1 = WMCreatePixmapFromFile(scr, file);
|
||||
if (!*icon1) {
|
||||
wwarning(_("could not load icon %s"), file);
|
||||
*icon2 = NULL;
|
||||
return;
|
||||
}
|
||||
icon = RLoadImage(rc, file, 0);
|
||||
if (!icon) {
|
||||
wwarning(_("could not load icon %s"), file);
|
||||
*icon2 = NULL;
|
||||
return;
|
||||
}
|
||||
if (xis) {
|
||||
RCombineImages(icon, xis);
|
||||
if (!(*icon2 = WMCreatePixmapFromRImage(scr, icon, 127))) {
|
||||
wwarning(_("could not process icon %s:"), file, RErrorString);
|
||||
*icon2 = NULL;
|
||||
}
|
||||
}
|
||||
RDestroyImage(icon);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
showData(_Panel *panel)
|
||||
{
|
||||
WMSetButtonSelected(panel->linkB, !GetBoolForKey("DontLinkWorkspaces"));
|
||||
|
||||
WMSetButtonSelected(panel->cyclB, GetBoolForKey("CycleWorkspaces"));
|
||||
|
||||
WMSetButtonSelected(panel->newB, GetBoolForKey("AdvanceToNewWorkspace"));
|
||||
|
||||
WMSetButtonSelected(panel->dockB, !GetBoolForKey("DisableDock"));
|
||||
|
||||
WMSetButtonSelected(panel->clipB, !GetBoolForKey("DisableClip"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
createPanel(Panel *p)
|
||||
{
|
||||
_Panel *panel = (_Panel*)p;
|
||||
WMScreen *scr = WMWidgetScreen(panel->win);
|
||||
WMPixmap *icon1, *icon2;
|
||||
RImage *xis = NULL;
|
||||
RContext *rc = WMScreenRContext(scr);
|
||||
char *path;
|
||||
|
||||
path = LocateImage(ARQUIVO_XIS);
|
||||
if (path) {
|
||||
xis = RLoadImage(rc, path, 0);
|
||||
if (!xis) {
|
||||
wwarning(_("could not load image file %s"), path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
panel->frame = WMCreateFrame(panel->win);
|
||||
WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
|
||||
|
||||
/***************** Workspace Navigation *****************/
|
||||
panel->navF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->navF, 365, 200);
|
||||
WMMoveWidget(panel->navF, 20, 15);
|
||||
WMSetFrameTitle(panel->navF, _("Workspace Navigation"));
|
||||
|
||||
panel->linkB = WMCreateButton(panel->navF, WBTToggle);
|
||||
WMResizeWidget(panel->linkB, 60, 60);
|
||||
WMMoveWidget(panel->linkB, 20, 25);
|
||||
WMSetButtonImagePosition(panel->linkB, WIPImageOnly);
|
||||
path = LocateImage(DONT_LINK_FILE);
|
||||
if (path) {
|
||||
createImages(scr, rc, xis, path, &icon1, &icon2);
|
||||
if (icon2) {
|
||||
WMSetButtonImage(panel->linkB, icon2);
|
||||
WMReleasePixmap(icon2);
|
||||
}
|
||||
if (icon1) {
|
||||
WMSetButtonAltImage(panel->linkB, icon1);
|
||||
WMReleasePixmap(icon1);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
panel->linkL = WMCreateLabel(panel->navF);
|
||||
WMResizeWidget(panel->linkL, 260, 38);
|
||||
WMMoveWidget(panel->linkL, 85, 25);
|
||||
WMSetLabelTextAlignment(panel->linkL, WALeft);
|
||||
WMSetLabelText(panel->linkL,
|
||||
_("drag windows between workspaces."));
|
||||
|
||||
|
||||
panel->cyclB = WMCreateButton(panel->navF, WBTToggle);
|
||||
WMResizeWidget(panel->cyclB, 60, 60);
|
||||
WMMoveWidget(panel->cyclB, 285, 75);
|
||||
WMSetButtonImagePosition(panel->cyclB, WIPImageOnly);
|
||||
path = LocateImage(CYCLE_FILE);
|
||||
if (path) {
|
||||
createImages(scr, rc, xis, path, &icon1, &icon2);
|
||||
if (icon2) {
|
||||
WMSetButtonImage(panel->cyclB, icon2);
|
||||
WMReleasePixmap(icon2);
|
||||
}
|
||||
if (icon1) {
|
||||
WMSetButtonAltImage(panel->cyclB, icon1);
|
||||
WMReleasePixmap(icon1);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
panel->cyclL = WMCreateLabel(panel->navF);
|
||||
WMResizeWidget(panel->cyclL, 260, 38);
|
||||
WMMoveWidget(panel->cyclL, 20, 85);
|
||||
WMSetLabelTextAlignment(panel->cyclL, WARight);
|
||||
WMSetLabelText(panel->cyclL,
|
||||
_("switch to first workspace when switching past the last workspace and vice-versa"));
|
||||
|
||||
panel->newB = WMCreateButton(panel->navF, WBTToggle);
|
||||
WMResizeWidget(panel->newB, 60, 60);
|
||||
WMMoveWidget(panel->newB, 20, 125);
|
||||
WMSetButtonImagePosition(panel->newB, WIPImageOnly);
|
||||
path = LocateImage(ADVANCE_FILE);
|
||||
if (path) {
|
||||
createImages(scr, rc, xis, path, &icon1, &icon2);
|
||||
if (icon2) {
|
||||
WMSetButtonImage(panel->newB, icon2);
|
||||
WMReleasePixmap(icon2);
|
||||
}
|
||||
if (icon1) {
|
||||
WMSetButtonAltImage(panel->newB, icon1);
|
||||
WMReleasePixmap(icon1);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
panel->newL = WMCreateLabel(panel->navF);
|
||||
WMResizeWidget(panel->newL, 260, 38);
|
||||
WMMoveWidget(panel->newL, 85, 140);
|
||||
WMSetLabelTextAlignment(panel->newL, WALeft);
|
||||
WMSetLabelText(panel->newL,
|
||||
_("create a new workspace when switching past the last workspace."));
|
||||
|
||||
WMMapSubwidgets(panel->navF);
|
||||
|
||||
/***************** Dock/Clip *****************/
|
||||
panel->dockF = WMCreateFrame(panel->frame);
|
||||
WMResizeWidget(panel->dockF, 105, 200);
|
||||
WMMoveWidget(panel->dockF, 400, 15);
|
||||
WMSetFrameTitle(panel->dockF, _("Dock/Clip"));
|
||||
|
||||
panel->dockB = WMCreateButton(panel->dockF, WBTToggle);
|
||||
WMResizeWidget(panel->dockB, 64, 64);
|
||||
WMMoveWidget(panel->dockB, 20, 30);
|
||||
WMSetButtonImagePosition(panel->dockB, WIPImageOnly);
|
||||
path = LocateImage(DOCK_FILE);
|
||||
if (path) {
|
||||
createImages(scr, rc, xis, path, &icon1, &icon2);
|
||||
if (icon2) {
|
||||
WMSetButtonImage(panel->dockB, icon2);
|
||||
WMReleasePixmap(icon2);
|
||||
}
|
||||
if (icon1) {
|
||||
WMSetButtonAltImage(panel->dockB, icon1);
|
||||
WMReleasePixmap(icon1);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
panel->clipB = WMCreateButton(panel->dockF, WBTToggle);
|
||||
WMResizeWidget(panel->clipB, 64, 64);
|
||||
WMMoveWidget(panel->clipB, 20, 110);
|
||||
WMSetButtonImagePosition(panel->clipB, WIPImageOnly);
|
||||
path = LocateImage(CLIP_FILE);
|
||||
if (path) {
|
||||
createImages(scr, rc, xis, path, &icon1, &icon2);
|
||||
if (icon2) {
|
||||
WMSetButtonImage(panel->clipB, icon2);
|
||||
WMReleasePixmap(icon2);
|
||||
}
|
||||
if (icon1) {
|
||||
WMSetButtonAltImage(panel->clipB, icon1);
|
||||
WMReleasePixmap(icon1);
|
||||
}
|
||||
}
|
||||
WMMapSubwidgets(panel->dockF);
|
||||
|
||||
if (xis)
|
||||
RDestroyImage(xis);
|
||||
|
||||
WMRealizeWidget(panel->frame);
|
||||
WMMapSubwidgets(panel->frame);
|
||||
|
||||
showData(panel);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
storeData(_Panel *panel)
|
||||
{
|
||||
SetBoolForKey(!WMGetButtonSelected(panel->linkB), "DontLinkWorkspaces");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->cyclB), "CycleWorkspaces");
|
||||
SetBoolForKey(WMGetButtonSelected(panel->newB), "AdvanceToNewWorkspace");
|
||||
|
||||
SetBoolForKey(!WMGetButtonSelected(panel->dockB), "DisableDock");
|
||||
SetBoolForKey(!WMGetButtonSelected(panel->clipB), "DisableClip");
|
||||
}
|
||||
|
||||
|
||||
|
||||
Panel*
|
||||
InitWorkspace(WMScreen *scr, WMWindow *win)
|
||||
{
|
||||
_Panel *panel;
|
||||
|
||||
panel = wmalloc(sizeof(_Panel));
|
||||
memset(panel, 0, sizeof(_Panel));
|
||||
|
||||
panel->sectionName = _("Workspace Preferences");
|
||||
|
||||
panel->win = win;
|
||||
|
||||
panel->callbacks.createWidgets = createPanel;
|
||||
panel->callbacks.updateDomain = storeData;
|
||||
|
||||
AddSection(panel, ICON_FILE);
|
||||
|
||||
return panel;
|
||||
}
|
||||
200
WPrefs.app/double.c
Normal file
200
WPrefs.app/double.c
Normal file
@@ -0,0 +1,200 @@
|
||||
|
||||
/*
|
||||
* Widget for testing double-clicks
|
||||
*
|
||||
*/
|
||||
|
||||
#include "WINGsP.h"
|
||||
|
||||
#include "double.h"
|
||||
|
||||
|
||||
typedef struct W_DoubleTest {
|
||||
W_Class widgetClass;
|
||||
WMView *view;
|
||||
|
||||
WMHandlerID timer;
|
||||
char on;
|
||||
char active;
|
||||
char *text;
|
||||
} _DoubleTest;
|
||||
|
||||
|
||||
|
||||
|
||||
/* some forward declarations */
|
||||
|
||||
static void destroyDoubleTest(_DoubleTest *dPtr);
|
||||
static void paintDoubleTest(_DoubleTest *dPtr);
|
||||
|
||||
|
||||
static void handleEvents(XEvent *event, void *data);
|
||||
static void handleActionEvents(XEvent *event, void *data);
|
||||
|
||||
|
||||
static W_ViewProcedureTable _DoubleTestViewProcedures = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
/* our widget class ID */
|
||||
static W_Class DoubleTestClass = 0;
|
||||
|
||||
|
||||
/*
|
||||
* Initializer for our widget. Must be called before creating any
|
||||
* instances of the widget.
|
||||
*/
|
||||
W_Class
|
||||
InitDoubleTest(WMScreen *scr)
|
||||
{
|
||||
/* register our widget with WINGs and get our widget class ID */
|
||||
if (!DoubleTestClass) {
|
||||
DoubleTestClass = W_RegisterUserWidget(&_DoubleTestViewProcedures);
|
||||
}
|
||||
|
||||
return DoubleTestClass;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Our widget fabrication plant.
|
||||
*/
|
||||
DoubleTest*
|
||||
CreateDoubleTest(WMWidget *parent, char *text)
|
||||
{
|
||||
DoubleTest *dPtr;
|
||||
|
||||
if (!DoubleTestClass)
|
||||
InitDoubleTest(WMWidgetScreen(parent));
|
||||
|
||||
/* allocate some storage for our new widget instance */
|
||||
dPtr = wmalloc(sizeof(DoubleTest));
|
||||
/* initialize it */
|
||||
memset(dPtr, 0, sizeof(DoubleTest));
|
||||
|
||||
/* set the class ID */
|
||||
dPtr->widgetClass = DoubleTestClass;
|
||||
|
||||
dPtr->view = W_CreateView(W_VIEW(parent));
|
||||
if (!dPtr->view) {
|
||||
free(dPtr);
|
||||
return NULL;
|
||||
}
|
||||
/* always do this */
|
||||
dPtr->view->self = dPtr;
|
||||
|
||||
dPtr->text = wstrdup(text);
|
||||
|
||||
WMCreateEventHandler(dPtr->view, ExposureMask /* this allows us to know when we should paint */
|
||||
|StructureNotifyMask, /* this allows us to know things like when we are destroyed */
|
||||
handleEvents, dPtr);
|
||||
|
||||
WMCreateEventHandler(dPtr->view, ButtonPressMask,handleActionEvents, dPtr);
|
||||
|
||||
return dPtr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
paintDoubleTest(_DoubleTest *dPtr)
|
||||
{
|
||||
W_Screen *scr = dPtr->view->screen;
|
||||
|
||||
if (dPtr->active) {
|
||||
XFillRectangle(scr->display, dPtr->view->window, W_GC(scr->white),
|
||||
0, 0, dPtr->view->size.width, dPtr->view->size.height);
|
||||
} else {
|
||||
XClearWindow(scr->display, dPtr->view->window);
|
||||
}
|
||||
|
||||
W_DrawRelief(scr, dPtr->view->window, 0, 0, dPtr->view->size.width,
|
||||
dPtr->view->size.height, dPtr->on ? WRSunken : WRRaised);
|
||||
|
||||
if (dPtr->text) {
|
||||
int y;
|
||||
y = (dPtr->view->size.height-scr->normalFont->height)/2;
|
||||
W_PaintText(dPtr->view, dPtr->view->window, scr->normalFont,
|
||||
dPtr->on, dPtr->on+y, dPtr->view->size.width, WACenter,
|
||||
W_GC(scr->black), False, dPtr->text, strlen(dPtr->text));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
handleEvents(XEvent *event, void *data)
|
||||
{
|
||||
_DoubleTest *dPtr = (_DoubleTest*)data;
|
||||
|
||||
|
||||
switch (event->type) {
|
||||
case Expose:
|
||||
if (event->xexpose.count!=0)
|
||||
break;
|
||||
paintDoubleTest(dPtr);
|
||||
break;
|
||||
|
||||
case DestroyNotify:
|
||||
destroyDoubleTest(dPtr);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
deactivate(void *data)
|
||||
{
|
||||
_DoubleTest *dPtr = (_DoubleTest*)data;
|
||||
|
||||
if (dPtr->active)
|
||||
dPtr->active = 0;
|
||||
paintDoubleTest(dPtr);
|
||||
|
||||
dPtr->timer = NULL;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
handleActionEvents(XEvent *event, void *data)
|
||||
{
|
||||
_DoubleTest *dPtr = (_DoubleTest*)data;
|
||||
extern _WINGsConfiguration WINGsConfiguration;
|
||||
|
||||
switch (event->type) {
|
||||
case ButtonPress:
|
||||
if (WMIsDoubleClick(event)) {
|
||||
if (dPtr->timer)
|
||||
WMDeleteTimerHandler(dPtr->timer);
|
||||
dPtr->timer = NULL;
|
||||
dPtr->on = !dPtr->on;
|
||||
dPtr->active = 0;
|
||||
paintDoubleTest(dPtr);
|
||||
} else {
|
||||
dPtr->timer=WMAddTimerHandler(WINGsConfiguration.doubleClickDelay,
|
||||
deactivate, dPtr);
|
||||
dPtr->active = 1;
|
||||
paintDoubleTest(dPtr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
destroyDoubleTest(_DoubleTest *dPtr)
|
||||
{
|
||||
if (dPtr->timer)
|
||||
WMDeleteTimerHandler(dPtr->timer);
|
||||
if (dPtr->text)
|
||||
free(dPtr->text);
|
||||
|
||||
free(dPtr);
|
||||
}
|
||||
|
||||
|
||||
5
WPrefs.app/double.h
Normal file
5
WPrefs.app/double.h
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
typedef struct W_DoubleTest DoubleTest;
|
||||
|
||||
|
||||
DoubleTest *CreateDoubleTest(WMWidget *parent, char *text);
|
||||
135
WPrefs.app/main.c
Normal file
135
WPrefs.app/main.c
Normal file
@@ -0,0 +1,135 @@
|
||||
/*
|
||||
* WPrefs - WindowMaker 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 <X11/Xlocale.h>
|
||||
|
||||
|
||||
extern void Initialize(WMScreen *scr);
|
||||
|
||||
|
||||
|
||||
void
|
||||
wAbort(Bool foo)
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
static 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;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
print_help(char *progname)
|
||||
{
|
||||
printf(_("usage: %s [options]\n"), progname);
|
||||
puts(_("options:"));
|
||||
puts(_(" -display <display> display to be used"));
|
||||
puts(_(" -version print version number and exit"));
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
Display *dpy;
|
||||
WMScreen *scr;
|
||||
char *locale;
|
||||
int i;
|
||||
char *display_name="";
|
||||
|
||||
WMInitializeApplication("WPrefs", &argc, argv);
|
||||
|
||||
if (argc>1) {
|
||||
for (i=1; i<argc; i++) {
|
||||
if (strcmp(argv[i], "-version")==0) {
|
||||
printf("WPrefs %s\n", WVERSION);
|
||||
exit(0);
|
||||
} else if (strcmp(argv[i], "-display")==0) {
|
||||
i++;
|
||||
if (i>=argc) {
|
||||
wwarning(_("too few arguments for %s"), argv[i-1]);
|
||||
exit(0);
|
||||
}
|
||||
display_name = argv[i];
|
||||
} else {
|
||||
print_help(argv[0]);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locale = getenv("LANG");
|
||||
setlocale(LC_ALL, "");
|
||||
|
||||
#ifdef I18N
|
||||
if (getenv("NLSPATH"))
|
||||
bindtextdomain("WPrefs", getenv("NLSPATH"));
|
||||
else
|
||||
bindtextdomain("WPrefs", NLSDIR);
|
||||
textdomain("WPrefs");
|
||||
|
||||
if (!XSupportsLocale()) {
|
||||
wwarning(_("X server does not support locale"));
|
||||
}
|
||||
if (XSetLocaleModifiers("") == NULL) {
|
||||
wwarning(_("cannot set locale modifiers"));
|
||||
}
|
||||
#endif
|
||||
|
||||
dpy = XOpenDisplay(display_name);
|
||||
if (!dpy) {
|
||||
wfatal(_("could not open display %s"), XDisplayName(display_name));
|
||||
exit(0);
|
||||
}
|
||||
#if 0
|
||||
XSynchronize(dpy, 1);
|
||||
#endif
|
||||
scr = WMCreateScreen(dpy, DefaultScreen(dpy));
|
||||
if (!scr) {
|
||||
wfatal(_("could not initialize application"));
|
||||
exit(0);
|
||||
}
|
||||
|
||||
PLSetStringCmpHook(stringCompareHook);
|
||||
|
||||
Initialize(scr);
|
||||
|
||||
while (1) {
|
||||
XEvent event;
|
||||
|
||||
WMNextEvent(dpy, &event);
|
||||
WMHandleEvent(&event);
|
||||
}
|
||||
}
|
||||
55
WPrefs.app/po/Makefile.am
Normal file
55
WPrefs.app/po/Makefile.am
Normal file
@@ -0,0 +1,55 @@
|
||||
nlsdir = @NLSDIR@
|
||||
|
||||
CATALOGS = @WPMOFILES@
|
||||
|
||||
CLEANFILES = $(CATALOGS)
|
||||
|
||||
EXTRA_DIST = pt.po hr.po fr.po ko.po cs.po
|
||||
|
||||
POTFILES = \
|
||||
$(top_builddir)/WPrefs/Configurations.c \
|
||||
$(top_builddir)/WPrefs/Expert.c \
|
||||
$(top_builddir)/WPrefs/Focus.c \
|
||||
$(top_builddir)/WPrefs/KeyboardSettings.c \
|
||||
$(top_builddir)/WPrefs/KeyboardShortcuts.c \
|
||||
$(top_builddir)/WPrefs/Menu.c \
|
||||
$(top_builddir)/WPrefs/MenuGuru.c \
|
||||
$(top_builddir)/WPrefs/MenuPreferences.c \
|
||||
$(top_builddir)/WPrefs/MouseSettings.c \
|
||||
$(top_builddir)/WPrefs/Paths.c \
|
||||
$(top_builddir)/WPrefs/Preferences.c \
|
||||
$(top_builddir)/WPrefs/Text.c \
|
||||
$(top_builddir)/WPrefs/TextureAndColor.c \
|
||||
$(top_builddir)/WPrefs/WPrefs.c \
|
||||
$(top_builddir)/WPrefs/WindowHandling.c \
|
||||
$(top_builddir)/WPrefs/Workspace.c \
|
||||
$(top_builddir)/WPrefs/main.c \
|
||||
$(top_builddir)/WPrefs/xmodifier.c
|
||||
|
||||
SUFFIXES = .po .mo
|
||||
|
||||
.po.mo:
|
||||
msgfmt -o $@ $<
|
||||
|
||||
|
||||
WPrefs.pot: $(POTFILES)
|
||||
xgettext --default-domain=WPrefs \
|
||||
--add-comments --keyword=_ $(POTFILES)
|
||||
if cmp -s WPrefs.po WPrefs.pot; then \
|
||||
rm -f WPrefs.po; \
|
||||
else \
|
||||
mv -f WPrefs.po WPrefs.pot; \
|
||||
fi
|
||||
|
||||
install-data-local: $(CATALOGS)
|
||||
$(mkinstalldirs) $(nlsdir)
|
||||
chmod 755 $(nlsdir)
|
||||
for n in $(CATALOGS) __DuMmY ; do \
|
||||
if test "$$n" -a "$$n" != "__DuMmY" ; then \
|
||||
l=`basename $$n .mo`; \
|
||||
$(mkinstalldirs) $(nlsdir)/$$l/LC_MESSAGES; \
|
||||
chmod 755 $(nlsdir)/$$l; \
|
||||
chmod 755 $(nlsdir)/$$l/LC_MESSAGES; \
|
||||
$(INSTALL) -m 644 $$n $(nlsdir)/$$l/LC_MESSAGES/WPrefs.mo; \
|
||||
fi; \
|
||||
done
|
||||
238
WPrefs.app/po/Makefile.in
Normal file
238
WPrefs.app/po/Makefile.in
Normal file
@@ -0,0 +1,238 @@
|
||||
# Makefile.in generated automatically by automake 1.3 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
DISTDIR =
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
top_builddir = ../..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
CC = @CC@
|
||||
CPP_PATH = @CPP_PATH@
|
||||
DFLAGS = @DFLAGS@
|
||||
GFXFLAGS = @GFXFLAGS@
|
||||
GFXLIBS = @GFXLIBS@
|
||||
I18N = @I18N@
|
||||
I18N_MB = @I18N_MB@
|
||||
ICONEXT = @ICONEXT@
|
||||
INTLIBS = @INTLIBS@
|
||||
LIBPL_INC_PATH = @LIBPL_INC_PATH@
|
||||
LIBPL_LIBS = @LIBPL_LIBS@
|
||||
LN_S = @LN_S@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MOFILES = @MOFILES@
|
||||
NLSDIR = @NLSDIR@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
REDUCE_APPICONS = @REDUCE_APPICONS@
|
||||
SHAPE = @SHAPE@
|
||||
SOUND = @SOUND@
|
||||
VERSION = @VERSION@
|
||||
WPMOFILES = @WPMOFILES@
|
||||
XCFLAGS = @XCFLAGS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XLFLAGS = @XLFLAGS@
|
||||
XLIBS = @XLIBS@
|
||||
XSHM = @XSHM@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LOCALE = @X_LOCALE@
|
||||
pixmapdir = @pixmapdir@
|
||||
wprefsdir = @wprefsdir@
|
||||
|
||||
nlsdir = @NLSDIR@
|
||||
|
||||
CATALOGS = @WPMOFILES@
|
||||
|
||||
CLEANFILES = $(CATALOGS)
|
||||
|
||||
EXTRA_DIST = pt.po hr.po fr.po ko.po cs.po
|
||||
|
||||
POTFILES = \
|
||||
$(top_builddir)/WPrefs/Configurations.c \
|
||||
$(top_builddir)/WPrefs/Expert.c \
|
||||
$(top_builddir)/WPrefs/Focus.c \
|
||||
$(top_builddir)/WPrefs/KeyboardSettings.c \
|
||||
$(top_builddir)/WPrefs/KeyboardShortcuts.c \
|
||||
$(top_builddir)/WPrefs/Menu.c \
|
||||
$(top_builddir)/WPrefs/MenuGuru.c \
|
||||
$(top_builddir)/WPrefs/MenuPreferences.c \
|
||||
$(top_builddir)/WPrefs/MouseSettings.c \
|
||||
$(top_builddir)/WPrefs/Paths.c \
|
||||
$(top_builddir)/WPrefs/Preferences.c \
|
||||
$(top_builddir)/WPrefs/Text.c \
|
||||
$(top_builddir)/WPrefs/TextureAndColor.c \
|
||||
$(top_builddir)/WPrefs/WPrefs.c \
|
||||
$(top_builddir)/WPrefs/WindowHandling.c \
|
||||
$(top_builddir)/WPrefs/Workspace.c \
|
||||
$(top_builddir)/WPrefs/main.c \
|
||||
$(top_builddir)/WPrefs/xmodifier.c
|
||||
|
||||
SUFFIXES = .po .mo
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../../src/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
DIST_COMMON = README Makefile.am Makefile.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
all: Makefile
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .mo .po
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps WPrefs.app/po/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
|
||||
subdir = WPrefs.app/po
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
done
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
$(MAKE)
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install-data: install-data-local
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall:
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
installdirs:
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(DISTCLEANFILES)
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-generic
|
||||
|
||||
clean: clean-generic mostlyclean
|
||||
|
||||
distclean: distclean-generic clean
|
||||
-rm -f config.status
|
||||
|
||||
maintainer-clean: maintainer-clean-generic distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
.PHONY: 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
|
||||
|
||||
|
||||
.po.mo:
|
||||
msgfmt -o $@ $<
|
||||
|
||||
WPrefs.pot: $(POTFILES)
|
||||
xgettext --default-domain=WPrefs \
|
||||
--add-comments --keyword=_ $(POTFILES)
|
||||
if cmp -s WPrefs.po WPrefs.pot; then \
|
||||
rm -f WPrefs.po; \
|
||||
else \
|
||||
mv -f WPrefs.po WPrefs.pot; \
|
||||
fi
|
||||
|
||||
install-data-local: $(CATALOGS)
|
||||
$(mkinstalldirs) $(nlsdir)
|
||||
chmod 755 $(nlsdir)
|
||||
for n in $(CATALOGS) __DuMmY ; do \
|
||||
if test "$$n" -a "$$n" != "__DuMmY" ; then \
|
||||
l=`basename $$n .mo`; \
|
||||
$(mkinstalldirs) $(nlsdir)/$$l/LC_MESSAGES; \
|
||||
chmod 755 $(nlsdir)/$$l; \
|
||||
chmod 755 $(nlsdir)/$$l/LC_MESSAGES; \
|
||||
$(INSTALL) -m 644 $$n $(nlsdir)/$$l/LC_MESSAGES/WPrefs.mo; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
11
WPrefs.app/po/README
Normal file
11
WPrefs.app/po/README
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
Instructions for translating po files can be found in the po/README directory
|
||||
in the top of the WindowMaker source tree.
|
||||
|
||||
File Language Current Maintainer
|
||||
------------------------------------------------------------------------------
|
||||
pt.po Portuguese Alfredo K. Kojima <kojima@inf.ufrgs.br>
|
||||
hr.po Croatian Toni Biliæ <tbilic@oliver.efos.hr>
|
||||
fr.po French Bastien NOCERA <hadess@writeme.com>
|
||||
ko.po Korean Byeong-Chan, Kim <redhands@linux.sarang.net>
|
||||
cs.po Czech 3 David ©auer <xsauer@hwlab.felk.cvut.cz>
|
||||
1251
WPrefs.app/po/cs.po
Normal file
1251
WPrefs.app/po/cs.po
Normal file
File diff suppressed because it is too large
Load Diff
1144
WPrefs.app/po/fr.po
Normal file
1144
WPrefs.app/po/fr.po
Normal file
File diff suppressed because it is too large
Load Diff
1184
WPrefs.app/po/hr.po
Normal file
1184
WPrefs.app/po/hr.po
Normal file
File diff suppressed because it is too large
Load Diff
1149
WPrefs.app/po/ko.po
Normal file
1149
WPrefs.app/po/ko.po
Normal file
File diff suppressed because it is too large
Load Diff
1150
WPrefs.app/po/pt.po
Normal file
1150
WPrefs.app/po/pt.po
Normal file
File diff suppressed because it is too large
Load Diff
62
WPrefs.app/tiff/Makefile.am
Normal file
62
WPrefs.app/tiff/Makefile.am
Normal file
@@ -0,0 +1,62 @@
|
||||
tiffdatadir = $(wprefsdir)/tiff
|
||||
|
||||
tiffdata_DATA = \
|
||||
advancetonewworkspace.tiff \
|
||||
animations.tiff \
|
||||
appearance.tiff \
|
||||
clip.tiff \
|
||||
configs.tiff \
|
||||
cycleworkspaces.tiff \
|
||||
dock.tiff \
|
||||
dontlinkworkspaces.tiff \
|
||||
ergonomic.tiff \
|
||||
expert.tiff \
|
||||
fonts.tiff \
|
||||
iconprefs.tiff \
|
||||
keyboard.tiff \
|
||||
keyboardprefs.tiff \
|
||||
keyshortcuts.tiff \
|
||||
menualign1.tiff \
|
||||
menualign2.tiff \
|
||||
menuprefs.tiff \
|
||||
menus.tiff \
|
||||
minimouseleft.tiff \
|
||||
minimousemiddle.tiff \
|
||||
minimouseright.tiff \
|
||||
moreanim.tiff \
|
||||
mousesettings.tiff \
|
||||
mousespeed.tiff \
|
||||
newstyle.tiff \
|
||||
nonopaque.tiff \
|
||||
oldstyle.tiff \
|
||||
opaque.tiff \
|
||||
paths.tiff \
|
||||
sound.tiff \
|
||||
speed0.tiff \
|
||||
speed0s.tiff \
|
||||
speed1.tiff \
|
||||
speed1s.tiff \
|
||||
speed2.tiff \
|
||||
speed2s.tiff \
|
||||
speed3.tiff \
|
||||
speed3s.tiff \
|
||||
speed4.tiff \
|
||||
speed4s.tiff \
|
||||
timer0.tiff \
|
||||
timer0s.tiff \
|
||||
timer1.tiff \
|
||||
timer1s.tiff \
|
||||
timer2.tiff \
|
||||
timer2s.tiff \
|
||||
timer3.tiff \
|
||||
timer3s.tiff \
|
||||
timer4.tiff \
|
||||
timer4s.tiff \
|
||||
timer5.tiff \
|
||||
timer5s.tiff \
|
||||
whandling.tiff \
|
||||
windowfocus.tiff \
|
||||
workspace.tiff \
|
||||
xis.tiff
|
||||
|
||||
EXTRA_DIST = $(tiffdata_DATA)
|
||||
267
WPrefs.app/tiff/Makefile.in
Normal file
267
WPrefs.app/tiff/Makefile.in
Normal file
@@ -0,0 +1,267 @@
|
||||
# Makefile.in generated automatically by automake 1.3 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
DISTDIR =
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
top_builddir = ../..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
CC = @CC@
|
||||
CPP_PATH = @CPP_PATH@
|
||||
DFLAGS = @DFLAGS@
|
||||
GFXFLAGS = @GFXFLAGS@
|
||||
GFXLIBS = @GFXLIBS@
|
||||
I18N = @I18N@
|
||||
I18N_MB = @I18N_MB@
|
||||
ICONEXT = @ICONEXT@
|
||||
INTLIBS = @INTLIBS@
|
||||
LIBPL_INC_PATH = @LIBPL_INC_PATH@
|
||||
LIBPL_LIBS = @LIBPL_LIBS@
|
||||
LN_S = @LN_S@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MOFILES = @MOFILES@
|
||||
NLSDIR = @NLSDIR@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
REDUCE_APPICONS = @REDUCE_APPICONS@
|
||||
SHAPE = @SHAPE@
|
||||
SOUND = @SOUND@
|
||||
VERSION = @VERSION@
|
||||
WPMOFILES = @WPMOFILES@
|
||||
XCFLAGS = @XCFLAGS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XLFLAGS = @XLFLAGS@
|
||||
XLIBS = @XLIBS@
|
||||
XSHM = @XSHM@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LOCALE = @X_LOCALE@
|
||||
pixmapdir = @pixmapdir@
|
||||
wprefsdir = @wprefsdir@
|
||||
|
||||
tiffdatadir = $(wprefsdir)/tiff
|
||||
|
||||
tiffdata_DATA = \
|
||||
advancetonewworkspace.tiff \
|
||||
animations.tiff \
|
||||
appearance.tiff \
|
||||
clip.tiff \
|
||||
configs.tiff \
|
||||
cycleworkspaces.tiff \
|
||||
dock.tiff \
|
||||
dontlinkworkspaces.tiff \
|
||||
ergonomic.tiff \
|
||||
expert.tiff \
|
||||
fonts.tiff \
|
||||
iconprefs.tiff \
|
||||
keyboard.tiff \
|
||||
keyboardprefs.tiff \
|
||||
keyshortcuts.tiff \
|
||||
menualign1.tiff \
|
||||
menualign2.tiff \
|
||||
menuprefs.tiff \
|
||||
menus.tiff \
|
||||
minimouseleft.tiff \
|
||||
minimousemiddle.tiff \
|
||||
minimouseright.tiff \
|
||||
moreanim.tiff \
|
||||
mousesettings.tiff \
|
||||
mousespeed.tiff \
|
||||
newstyle.tiff \
|
||||
nonopaque.tiff \
|
||||
oldstyle.tiff \
|
||||
opaque.tiff \
|
||||
paths.tiff \
|
||||
sound.tiff \
|
||||
speed0.tiff \
|
||||
speed0s.tiff \
|
||||
speed1.tiff \
|
||||
speed1s.tiff \
|
||||
speed2.tiff \
|
||||
speed2s.tiff \
|
||||
speed3.tiff \
|
||||
speed3s.tiff \
|
||||
speed4.tiff \
|
||||
speed4s.tiff \
|
||||
timer0.tiff \
|
||||
timer0s.tiff \
|
||||
timer1.tiff \
|
||||
timer1s.tiff \
|
||||
timer2.tiff \
|
||||
timer2s.tiff \
|
||||
timer3.tiff \
|
||||
timer3s.tiff \
|
||||
timer4.tiff \
|
||||
timer4s.tiff \
|
||||
timer5.tiff \
|
||||
timer5s.tiff \
|
||||
whandling.tiff \
|
||||
windowfocus.tiff \
|
||||
workspace.tiff \
|
||||
xis.tiff
|
||||
|
||||
EXTRA_DIST = $(tiffdata_DATA)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../../src/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
DATA = $(tiffdata_DATA)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
all: Makefile $(DATA)
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps WPrefs.app/tiff/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
|
||||
install-tiffdataDATA: $(tiffdata_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(tiffdatadir)
|
||||
@list='$(tiffdata_DATA)'; for p in $$list; do \
|
||||
if test -f $(srcdir)/$$p; then \
|
||||
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(tiffdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(tiffdatadir)/$$p; \
|
||||
else if test -f $$p; then \
|
||||
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(tiffdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $$p $(DESTDIR)$(tiffdatadir)/$$p; \
|
||||
fi; fi; \
|
||||
done
|
||||
|
||||
uninstall-tiffdataDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
list='$(tiffdata_DATA)'; for p in $$list; do \
|
||||
rm -f $(DESTDIR)$(tiffdatadir)/$$p; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
|
||||
subdir = WPrefs.app/tiff
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
done
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
$(MAKE)
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install-data: install-tiffdataDATA
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-tiffdataDATA
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DATADIR)$(tiffdatadir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(DISTCLEANFILES)
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-generic
|
||||
|
||||
clean: clean-generic mostlyclean
|
||||
|
||||
distclean: distclean-generic clean
|
||||
-rm -f config.status
|
||||
|
||||
maintainer-clean: maintainer-clean-generic distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
.PHONY: uninstall-tiffdataDATA install-tiffdataDATA tags distdir info \
|
||||
dvi installcheck install-exec install-data install uninstall all \
|
||||
installdirs mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
BIN
WPrefs.app/tiff/advancetonewworkspace.tiff
Normal file
BIN
WPrefs.app/tiff/advancetonewworkspace.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/animations.tiff
Normal file
BIN
WPrefs.app/tiff/animations.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/appearance.tiff
Normal file
BIN
WPrefs.app/tiff/appearance.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/clip.tiff
Normal file
BIN
WPrefs.app/tiff/clip.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/configs.tiff
Normal file
BIN
WPrefs.app/tiff/configs.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/cycleworkspaces.tiff
Normal file
BIN
WPrefs.app/tiff/cycleworkspaces.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/dock.tiff
Normal file
BIN
WPrefs.app/tiff/dock.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/dontlinkworkspaces.tiff
Normal file
BIN
WPrefs.app/tiff/dontlinkworkspaces.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/ergonomic.tiff
Normal file
BIN
WPrefs.app/tiff/ergonomic.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/expert.tiff
Normal file
BIN
WPrefs.app/tiff/expert.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/fonts.tiff
Normal file
BIN
WPrefs.app/tiff/fonts.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/iconprefs.tiff
Normal file
BIN
WPrefs.app/tiff/iconprefs.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/keyboard.tiff
Normal file
BIN
WPrefs.app/tiff/keyboard.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/keyboardprefs.tiff
Normal file
BIN
WPrefs.app/tiff/keyboardprefs.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/keyshortcuts.tiff
Normal file
BIN
WPrefs.app/tiff/keyshortcuts.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/menualign1.tiff
Normal file
BIN
WPrefs.app/tiff/menualign1.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/menualign2.tiff
Normal file
BIN
WPrefs.app/tiff/menualign2.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/menuprefs.tiff
Normal file
BIN
WPrefs.app/tiff/menuprefs.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/menus.tiff
Normal file
BIN
WPrefs.app/tiff/menus.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/minimouseleft.tiff
Normal file
BIN
WPrefs.app/tiff/minimouseleft.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/minimousemiddle.tiff
Normal file
BIN
WPrefs.app/tiff/minimousemiddle.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/minimouseright.tiff
Normal file
BIN
WPrefs.app/tiff/minimouseright.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/moreanim.tiff
Normal file
BIN
WPrefs.app/tiff/moreanim.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/mousesettings.tiff
Normal file
BIN
WPrefs.app/tiff/mousesettings.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/mousespeed.tiff
Normal file
BIN
WPrefs.app/tiff/mousespeed.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/newstyle.tiff
Normal file
BIN
WPrefs.app/tiff/newstyle.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/nonopaque.tiff
Normal file
BIN
WPrefs.app/tiff/nonopaque.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/oldstyle.tiff
Normal file
BIN
WPrefs.app/tiff/oldstyle.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/opaque.tiff
Normal file
BIN
WPrefs.app/tiff/opaque.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/paths.tiff
Normal file
BIN
WPrefs.app/tiff/paths.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/sound.tiff
Normal file
BIN
WPrefs.app/tiff/sound.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed0.tiff
Normal file
BIN
WPrefs.app/tiff/speed0.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed0s.tiff
Normal file
BIN
WPrefs.app/tiff/speed0s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed1.tiff
Normal file
BIN
WPrefs.app/tiff/speed1.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed1s.tiff
Normal file
BIN
WPrefs.app/tiff/speed1s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed2.tiff
Normal file
BIN
WPrefs.app/tiff/speed2.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed2s.tiff
Normal file
BIN
WPrefs.app/tiff/speed2s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed3.tiff
Normal file
BIN
WPrefs.app/tiff/speed3.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed3s.tiff
Normal file
BIN
WPrefs.app/tiff/speed3s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed4.tiff
Normal file
BIN
WPrefs.app/tiff/speed4.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/speed4s.tiff
Normal file
BIN
WPrefs.app/tiff/speed4s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer0.tiff
Normal file
BIN
WPrefs.app/tiff/timer0.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer0s.tiff
Normal file
BIN
WPrefs.app/tiff/timer0s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer1.tiff
Normal file
BIN
WPrefs.app/tiff/timer1.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer1s.tiff
Normal file
BIN
WPrefs.app/tiff/timer1s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer2.tiff
Normal file
BIN
WPrefs.app/tiff/timer2.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer2s.tiff
Normal file
BIN
WPrefs.app/tiff/timer2s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer3.tiff
Normal file
BIN
WPrefs.app/tiff/timer3.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer3s.tiff
Normal file
BIN
WPrefs.app/tiff/timer3s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer4.tiff
Normal file
BIN
WPrefs.app/tiff/timer4.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer4s.tiff
Normal file
BIN
WPrefs.app/tiff/timer4s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer5.tiff
Normal file
BIN
WPrefs.app/tiff/timer5.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/timer5s.tiff
Normal file
BIN
WPrefs.app/tiff/timer5s.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/whandling.tiff
Normal file
BIN
WPrefs.app/tiff/whandling.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/windowfocus.tiff
Normal file
BIN
WPrefs.app/tiff/windowfocus.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/workspace.tiff
Normal file
BIN
WPrefs.app/tiff/workspace.tiff
Normal file
Binary file not shown.
BIN
WPrefs.app/tiff/xis.tiff
Normal file
BIN
WPrefs.app/tiff/xis.tiff
Normal file
Binary file not shown.
267
WPrefs.app/xmodifier.c
Normal file
267
WPrefs.app/xmodifier.c
Normal file
@@ -0,0 +1,267 @@
|
||||
/* Grok X modifier mappings for shortcuts.
|
||||
|
||||
Most of this code was taken from src/event-Xt.c in XEmacs 20.3-b17.
|
||||
The copyright(s) from the original XEmacs code are included below.
|
||||
|
||||
Perpetrator: Sudish Joseph <sj@eng.mindspring.net>, Sept. 1997. */
|
||||
|
||||
/*
|
||||
* More changes for WPrefs by Alfredo Kojima, Aug 1998
|
||||
*/
|
||||
|
||||
/* The event_stream interface for X11 with Xt, and/or tty frames.
|
||||
Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995 Sun Microsystems, Inc.
|
||||
Copyright (C) 1996 Ben Wing.
|
||||
|
||||
This file is part of XEmacs.
|
||||
|
||||
XEmacs is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
XEmacs is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with XEmacs; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <string.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/keysym.h>
|
||||
|
||||
#include "WUtil.h"
|
||||
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* keymap handling */
|
||||
/************************************************************************/
|
||||
|
||||
/* X bogusly doesn't define the interpretations of any bits besides
|
||||
ModControl, ModShift, and ModLock; so the Interclient Communication
|
||||
Conventions Manual says that we have to bend over backwards to figure
|
||||
out what the other modifier bits mean. According to ICCCM:
|
||||
|
||||
- Any keycode which is assigned ModControl is a "control" key.
|
||||
|
||||
- Any modifier bit which is assigned to a keycode which generates Meta_L
|
||||
or Meta_R is the modifier bit meaning "meta". Likewise for Super, Hyper,
|
||||
etc.
|
||||
|
||||
- Any keypress event which contains ModControl in its state should be
|
||||
interpreted as a "control" character.
|
||||
|
||||
- Any keypress event which contains a modifier bit in its state which is
|
||||
generated by a keycode whose corresponding keysym is Meta_L or Meta_R
|
||||
should be interpreted as a "meta" character. Likewise for Super, Hyper,
|
||||
etc.
|
||||
|
||||
- It is illegal for a keysym to be associated with more than one modifier
|
||||
bit.
|
||||
|
||||
This means that the only thing that emacs can reasonably interpret as a
|
||||
"meta" key is a key whose keysym is Meta_L or Meta_R, and which generates
|
||||
one of the modifier bits Mod1-Mod5.
|
||||
|
||||
Unfortunately, many keyboards don't have Meta keys in their default
|
||||
configuration. So, if there are no Meta keys, but there are "Alt" keys,
|
||||
emacs will interpret Alt as Meta. If there are both Meta and Alt keys,
|
||||
then the Meta keys mean "Meta", and the Alt keys mean "Alt" (it used to
|
||||
mean "Symbol," but that just confused the hell out of way too many people).
|
||||
|
||||
This works with the default configurations of the 19 keyboard-types I've
|
||||
checked.
|
||||
|
||||
Emacs detects keyboard configurations which violate the above rules, and
|
||||
prints an error message on the standard-error-output. (Perhaps it should
|
||||
use a pop-up-window instead.)
|
||||
*/
|
||||
|
||||
static int MetaIndex, HyperIndex, SuperIndex, AltIndex, ModeIndex;
|
||||
|
||||
static const char *
|
||||
index_to_name (int indice)
|
||||
{
|
||||
switch (indice)
|
||||
{
|
||||
case ShiftMapIndex: return "ModShift";
|
||||
case LockMapIndex: return "ModLock";
|
||||
case ControlMapIndex: return "ModControl";
|
||||
case Mod1MapIndex: return "Mod1";
|
||||
case Mod2MapIndex: return "Mod2";
|
||||
case Mod3MapIndex: return "Mod3";
|
||||
case Mod4MapIndex: return "Mod4";
|
||||
case Mod5MapIndex: return "Mod5";
|
||||
default: return "???";
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
x_reset_modifier_mapping (Display *display)
|
||||
{
|
||||
int modifier_index, modifier_key, column, mkpm;
|
||||
int warned_about_overlapping_modifiers = 0;
|
||||
int warned_about_predefined_modifiers = 0;
|
||||
int warned_about_duplicate_modifiers = 0;
|
||||
int meta_bit = 0;
|
||||
int hyper_bit = 0;
|
||||
int super_bit = 0;
|
||||
int alt_bit = 0;
|
||||
int mode_bit = 0;
|
||||
XModifierKeymap *x_modifier_keymap = XGetModifierMapping (display);
|
||||
|
||||
#define modwarn(name,old,other) \
|
||||
wwarning ("%s (0x%x) generates %s, which is generated by %s.\n\n", \
|
||||
name, code, index_to_name (old), other), \
|
||||
warned_about_overlapping_modifiers = 1
|
||||
|
||||
#define modbarf(name,other) \
|
||||
wwarning ("%s (0x%x) generates %s, which is nonsensical.\n\n", \
|
||||
name, code, other), \
|
||||
warned_about_predefined_modifiers = 1
|
||||
|
||||
#define check_modifier(name,mask) \
|
||||
if ((1<<modifier_index) != mask) \
|
||||
wwarning ("%s (0x%x) generates %s, which is nonsensical.\n\n", \
|
||||
name, code, index_to_name (modifier_index)), \
|
||||
warned_about_predefined_modifiers = 1
|
||||
|
||||
#define store_modifier(name,old) \
|
||||
if (old && old != modifier_index) \
|
||||
wwarning ("%s (0x%x) generates both %s and %s, which is nonsensical.\n\n",\
|
||||
name, code, index_to_name (old), \
|
||||
index_to_name (modifier_index)), \
|
||||
warned_about_duplicate_modifiers = 1; \
|
||||
if (modifier_index == ShiftMapIndex) modbarf (name,"ModShift"); \
|
||||
else if (modifier_index == LockMapIndex) modbarf (name,"ModLock"); \
|
||||
else if (modifier_index == ControlMapIndex) modbarf (name,"ModControl"); \
|
||||
else if (sym == XK_Mode_switch) \
|
||||
mode_bit = modifier_index; /* Mode_switch is special, see below... */ \
|
||||
else if (modifier_index == meta_bit && old != meta_bit) \
|
||||
modwarn (name, meta_bit, "Meta"); \
|
||||
else if (modifier_index == super_bit && old != super_bit) \
|
||||
modwarn (name, super_bit, "Super"); \
|
||||
else if (modifier_index == hyper_bit && old != hyper_bit) \
|
||||
modwarn (name, hyper_bit, "Hyper"); \
|
||||
else if (modifier_index == alt_bit && old != alt_bit) \
|
||||
modwarn (name, alt_bit, "Alt"); \
|
||||
else \
|
||||
old = modifier_index;
|
||||
|
||||
mkpm = x_modifier_keymap->max_keypermod;
|
||||
for (modifier_index = 0; modifier_index < 8; modifier_index++)
|
||||
for (modifier_key = 0; modifier_key < mkpm; modifier_key++) {
|
||||
KeySym last_sym = 0;
|
||||
for (column = 0; column < 4; column += 2) {
|
||||
KeyCode code = x_modifier_keymap->modifiermap[modifier_index * mkpm
|
||||
+ modifier_key];
|
||||
KeySym sym = (code ? XKeycodeToKeysym (display, code, column) : 0);
|
||||
if (sym == last_sym) continue;
|
||||
last_sym = sym;
|
||||
switch (sym) {
|
||||
case XK_Mode_switch:store_modifier ("Mode_switch", mode_bit); break;
|
||||
case XK_Meta_L: store_modifier ("Meta_L", meta_bit); break;
|
||||
case XK_Meta_R: store_modifier ("Meta_R", meta_bit); break;
|
||||
case XK_Super_L: store_modifier ("Super_L", super_bit); break;
|
||||
case XK_Super_R: store_modifier ("Super_R", super_bit); break;
|
||||
case XK_Hyper_L: store_modifier ("Hyper_L", hyper_bit); break;
|
||||
case XK_Hyper_R: store_modifier ("Hyper_R", hyper_bit); break;
|
||||
case XK_Alt_L: store_modifier ("Alt_L", alt_bit); break;
|
||||
case XK_Alt_R: store_modifier ("Alt_R", alt_bit); break;
|
||||
case XK_Control_L: check_modifier ("Control_L", ControlMask); break;
|
||||
case XK_Control_R: check_modifier ("Control_R", ControlMask); break;
|
||||
case XK_Shift_L: check_modifier ("Shift_L", ShiftMask); break;
|
||||
case XK_Shift_R: check_modifier ("Shift_R", ShiftMask); break;
|
||||
case XK_Shift_Lock: check_modifier ("Shift_Lock", LockMask); break;
|
||||
case XK_Caps_Lock: check_modifier ("Caps_Lock", LockMask); break;
|
||||
|
||||
/* It probably doesn't make any sense for a modifier bit to be
|
||||
assigned to a key that is not one of the above, but OpenWindows
|
||||
assigns modifier bits to a couple of random function keys for
|
||||
no reason that I can discern, so printing a warning here would
|
||||
be annoying. */
|
||||
}
|
||||
}
|
||||
}
|
||||
#undef store_modifier
|
||||
#undef check_modifier
|
||||
#undef modwarn
|
||||
#undef modbarf
|
||||
|
||||
/* If there was no Meta key, then try using the Alt key instead.
|
||||
If there is both a Meta key and an Alt key, then the Alt key
|
||||
is not disturbed and remains an Alt key. */
|
||||
if (! meta_bit && alt_bit)
|
||||
meta_bit = alt_bit, alt_bit = 0;
|
||||
|
||||
/* mode_bit overrides everything, since it's processed down inside of
|
||||
XLookupString() instead of by us. If Meta and Mode_switch both
|
||||
generate the same modifier bit (which is an error), then we don't
|
||||
interpret that bit as Meta, because we can't make XLookupString()
|
||||
not interpret it as Mode_switch; and interpreting it as both would
|
||||
be totally wrong. */
|
||||
if (mode_bit)
|
||||
{
|
||||
const char *warn = 0;
|
||||
if (mode_bit == meta_bit) warn = "Meta", meta_bit = 0;
|
||||
else if (mode_bit == hyper_bit) warn = "Hyper", hyper_bit = 0;
|
||||
else if (mode_bit == super_bit) warn = "Super", super_bit = 0;
|
||||
else if (mode_bit == alt_bit) warn = "Alt", alt_bit = 0;
|
||||
if (warn)
|
||||
{
|
||||
wwarning
|
||||
("%s is being used for both Mode_switch and %s.\n\n",
|
||||
index_to_name (mode_bit), warn),
|
||||
warned_about_overlapping_modifiers = 1;
|
||||
}
|
||||
}
|
||||
|
||||
MetaIndex = meta_bit;
|
||||
HyperIndex = hyper_bit;
|
||||
SuperIndex = super_bit;
|
||||
AltIndex = alt_bit;
|
||||
ModeIndex = mode_bit;
|
||||
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ModifierFromKey(Display *dpy, char *key)
|
||||
{
|
||||
static int eqw = 0;
|
||||
|
||||
if (!eqw)
|
||||
x_reset_modifier_mapping(dpy);
|
||||
eqw = 1;
|
||||
|
||||
if (strcasecmp(key, "SHIFT")==0)
|
||||
return ShiftMapIndex;
|
||||
else if (strcasecmp(key, "CONTROL")==0)
|
||||
return ControlMapIndex;
|
||||
else if (strcasecmp(key, "ALT")==0)
|
||||
return AltIndex;
|
||||
else if (strcasecmp(key, "META")==0)
|
||||
return MetaIndex;
|
||||
else if (strcasecmp(key, "SUPER")==0)
|
||||
return SuperIndex;
|
||||
else if (strcasecmp(key, "HYPER")==0)
|
||||
return HyperIndex;
|
||||
else if (strcasecmp(key, "MOD1")==0)
|
||||
return Mod1MapIndex;
|
||||
else if (strcasecmp(key, "MOD2")==0)
|
||||
return Mod2MapIndex;
|
||||
else if (strcasecmp(key, "MOD3")==0)
|
||||
return Mod3MapIndex;
|
||||
else if (strcasecmp(key, "MOD4")==0)
|
||||
return Mod4MapIndex;
|
||||
else if (strcasecmp(key, "MOD5")==0)
|
||||
return Mod5MapIndex;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
62
WPrefs.app/xpm/Makefile.am
Normal file
62
WPrefs.app/xpm/Makefile.am
Normal file
@@ -0,0 +1,62 @@
|
||||
xpmdatadir = $(wprefsdir)/xpm
|
||||
|
||||
xpmdata_DATA = \
|
||||
advancetonewworkspace.xpm \
|
||||
animations.xpm \
|
||||
appearance.xpm \
|
||||
clip.xpm \
|
||||
configs.xpm \
|
||||
cycleworkspaces.xpm \
|
||||
dock.xpm \
|
||||
dontlinkworkspaces.xpm \
|
||||
ergonomic.xpm \
|
||||
expert.xpm \
|
||||
fonts.xpm \
|
||||
iconprefs.xpm \
|
||||
keyboard.xpm \
|
||||
keyboardprefs.xpm \
|
||||
keyshortcuts.xpm \
|
||||
menualign1.xpm \
|
||||
menualign2.xpm \
|
||||
menuprefs.xpm \
|
||||
menus.xpm \
|
||||
minimouseleft.xpm \
|
||||
minimousemiddle.xpm \
|
||||
minimouseright.xpm \
|
||||
moreanim.xpm \
|
||||
mousesettings.xpm \
|
||||
mousespeed.xpm \
|
||||
newstyle.xpm \
|
||||
nonopaque.xpm \
|
||||
oldstyle.xpm \
|
||||
opaque.xpm \
|
||||
paths.xpm \
|
||||
sound.xpm \
|
||||
speed0.xpm \
|
||||
speed0s.xpm \
|
||||
speed1.xpm \
|
||||
speed1s.xpm \
|
||||
speed2.xpm \
|
||||
speed2s.xpm \
|
||||
speed3.xpm \
|
||||
speed3s.xpm \
|
||||
speed4.xpm \
|
||||
speed4s.xpm \
|
||||
timer0.xpm \
|
||||
timer0s.xpm \
|
||||
timer1.xpm \
|
||||
timer1s.xpm \
|
||||
timer2.xpm \
|
||||
timer2s.xpm \
|
||||
timer3.xpm \
|
||||
timer3s.xpm \
|
||||
timer4.xpm \
|
||||
timer4s.xpm \
|
||||
timer5.xpm \
|
||||
timer5s.xpm \
|
||||
whandling.xpm \
|
||||
windowfocus.xpm \
|
||||
workspace.xpm \
|
||||
xis.xpm
|
||||
|
||||
EXTRA_DIST = $(xpmdata_DATA)
|
||||
267
WPrefs.app/xpm/Makefile.in
Normal file
267
WPrefs.app/xpm/Makefile.in
Normal file
@@ -0,0 +1,267 @@
|
||||
# Makefile.in generated automatically by automake 1.3 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
DISTDIR =
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
top_builddir = ../..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
CC = @CC@
|
||||
CPP_PATH = @CPP_PATH@
|
||||
DFLAGS = @DFLAGS@
|
||||
GFXFLAGS = @GFXFLAGS@
|
||||
GFXLIBS = @GFXLIBS@
|
||||
I18N = @I18N@
|
||||
I18N_MB = @I18N_MB@
|
||||
ICONEXT = @ICONEXT@
|
||||
INTLIBS = @INTLIBS@
|
||||
LIBPL_INC_PATH = @LIBPL_INC_PATH@
|
||||
LIBPL_LIBS = @LIBPL_LIBS@
|
||||
LN_S = @LN_S@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MOFILES = @MOFILES@
|
||||
NLSDIR = @NLSDIR@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
REDUCE_APPICONS = @REDUCE_APPICONS@
|
||||
SHAPE = @SHAPE@
|
||||
SOUND = @SOUND@
|
||||
VERSION = @VERSION@
|
||||
WPMOFILES = @WPMOFILES@
|
||||
XCFLAGS = @XCFLAGS@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XLFLAGS = @XLFLAGS@
|
||||
XLIBS = @XLIBS@
|
||||
XSHM = @XSHM@
|
||||
X_EXTRA_LIBS = @X_EXTRA_LIBS@
|
||||
X_LOCALE = @X_LOCALE@
|
||||
pixmapdir = @pixmapdir@
|
||||
wprefsdir = @wprefsdir@
|
||||
|
||||
xpmdatadir = $(wprefsdir)/xpm
|
||||
|
||||
xpmdata_DATA = \
|
||||
advancetonewworkspace.xpm \
|
||||
animations.xpm \
|
||||
appearance.xpm \
|
||||
clip.xpm \
|
||||
configs.xpm \
|
||||
cycleworkspaces.xpm \
|
||||
dock.xpm \
|
||||
dontlinkworkspaces.xpm \
|
||||
ergonomic.xpm \
|
||||
expert.xpm \
|
||||
fonts.xpm \
|
||||
iconprefs.xpm \
|
||||
keyboard.xpm \
|
||||
keyboardprefs.xpm \
|
||||
keyshortcuts.xpm \
|
||||
menualign1.xpm \
|
||||
menualign2.xpm \
|
||||
menuprefs.xpm \
|
||||
menus.xpm \
|
||||
minimouseleft.xpm \
|
||||
minimousemiddle.xpm \
|
||||
minimouseright.xpm \
|
||||
moreanim.xpm \
|
||||
mousesettings.xpm \
|
||||
mousespeed.xpm \
|
||||
newstyle.xpm \
|
||||
nonopaque.xpm \
|
||||
oldstyle.xpm \
|
||||
opaque.xpm \
|
||||
paths.xpm \
|
||||
sound.xpm \
|
||||
speed0.xpm \
|
||||
speed0s.xpm \
|
||||
speed1.xpm \
|
||||
speed1s.xpm \
|
||||
speed2.xpm \
|
||||
speed2s.xpm \
|
||||
speed3.xpm \
|
||||
speed3s.xpm \
|
||||
speed4.xpm \
|
||||
speed4s.xpm \
|
||||
timer0.xpm \
|
||||
timer0s.xpm \
|
||||
timer1.xpm \
|
||||
timer1s.xpm \
|
||||
timer2.xpm \
|
||||
timer2s.xpm \
|
||||
timer3.xpm \
|
||||
timer3s.xpm \
|
||||
timer4.xpm \
|
||||
timer4s.xpm \
|
||||
timer5.xpm \
|
||||
timer5s.xpm \
|
||||
whandling.xpm \
|
||||
windowfocus.xpm \
|
||||
workspace.xpm \
|
||||
xis.xpm
|
||||
|
||||
EXTRA_DIST = $(xpmdata_DATA)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../../src/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
DATA = $(xpmdata_DATA)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
all: Makefile $(DATA)
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps WPrefs.app/xpm/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
|
||||
install-xpmdataDATA: $(xpmdata_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(xpmdatadir)
|
||||
@list='$(xpmdata_DATA)'; for p in $$list; do \
|
||||
if test -f $(srcdir)/$$p; then \
|
||||
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(xpmdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(xpmdatadir)/$$p; \
|
||||
else if test -f $$p; then \
|
||||
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(xpmdatadir)/$$p"; \
|
||||
$(INSTALL_DATA) $$p $(DESTDIR)$(xpmdatadir)/$$p; \
|
||||
fi; fi; \
|
||||
done
|
||||
|
||||
uninstall-xpmdataDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
list='$(xpmdata_DATA)'; for p in $$list; do \
|
||||
rm -f $(DESTDIR)$(xpmdatadir)/$$p; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
|
||||
subdir = WPrefs.app/xpm
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
done
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
$(MAKE)
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install-data: install-xpmdataDATA
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-xpmdataDATA
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DATADIR)$(xpmdatadir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(DISTCLEANFILES)
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-generic
|
||||
|
||||
clean: clean-generic mostlyclean
|
||||
|
||||
distclean: distclean-generic clean
|
||||
-rm -f config.status
|
||||
|
||||
maintainer-clean: maintainer-clean-generic distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
.PHONY: uninstall-xpmdataDATA install-xpmdataDATA tags distdir info dvi \
|
||||
installcheck install-exec install-data install uninstall all \
|
||||
installdirs mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
98
WPrefs.app/xpm/advancetonewworkspace.xpm
Normal file
98
WPrefs.app/xpm/advancetonewworkspace.xpm
Normal file
@@ -0,0 +1,98 @@
|
||||
/* XPM */
|
||||
static char * image_name[] = {
|
||||
"48 48 47 1",
|
||||
" c None",
|
||||
". c #000000000000",
|
||||
"X c #082082079658",
|
||||
"o c #10407DF7AEBA",
|
||||
"O c #00007DF79E79",
|
||||
"+ c #186179E7A699",
|
||||
"@ c #08207DF7A699",
|
||||
"# c #10408207AEBA",
|
||||
"$ c #10408207A699",
|
||||
"% c #10407DF79E79",
|
||||
"& c #18618617A699",
|
||||
"* c #104079E79E79",
|
||||
"= c #B6DAB6DAB6DA",
|
||||
"- c #71C671C671C6",
|
||||
"; c #38E338E338E3",
|
||||
": c #082000009E79",
|
||||
"> c #082082079E79",
|
||||
", c #08208207A699",
|
||||
"< c #08208207AEBA",
|
||||
"1 c #08208617A699",
|
||||
"2 c #104079E7AEBA",
|
||||
"3 c #FFFFFFFFFFFF",
|
||||
"4 c #104075D6A699",
|
||||
"5 c #00008207A699",
|
||||
"6 c #A699A699A699",
|
||||
"7 c #79E77DF779E7",
|
||||
"8 c #10408617A699",
|
||||
"9 c #186175D6A699",
|
||||
"0 c #18618A289658",
|
||||
"q c #082079E7AEBA",
|
||||
"w c #186179E79E79",
|
||||
"e c #30C230C230C2",
|
||||
"r c #18618A289E79",
|
||||
"t c #18617DF79E79",
|
||||
"y c #08207DF7AEBA",
|
||||
"u c #10407DF79658",
|
||||
"i c #08208617AEBA",
|
||||
"p c #104079E79658",
|
||||
"a c #082079E7A699",
|
||||
"s c #082079E79E79",
|
||||
"d c #10408A28A699",
|
||||
"f c #104079E7A699",
|
||||
"g c #00007DF7A699",
|
||||
"h c #08207DF79E79",
|
||||
"j c #000086179E79",
|
||||
"k c #10407DF7A699",
|
||||
"l c #104082079E79",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ............... ............... ",
|
||||
" .XoO+o@#$%&*=-.; ",
|
||||
" .$:::::>,<1%=-.; . .$:::::>,<1%=-.; ",
|
||||
" .233333145%,67.; .. ",
|
||||
" .833333@#90&67.; . . ..... .833333@#90&67.; ",
|
||||
" .q333:::::,@=-.; . . ...... ",
|
||||
" .weee33333%1=-.; . . ....... .weee33333%1=-.; ",
|
||||
" .1%,r33333t267.; . . ...... ",
|
||||
" .*yu@33333ip67.; . . ..... .*yu@33333ip67.; ",
|
||||
" .$a*ueeeeeas=-.; .. ",
|
||||
" .=-df$4ug,*q=-.; . .=-df$4ug,*q=-.; ",
|
||||
" .eehja*fjg<kl4.; ",
|
||||
" ...............; ...............; ",
|
||||
" ;;;;;;;;;;;;;;; ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
118
WPrefs.app/xpm/animations.xpm
Normal file
118
WPrefs.app/xpm/animations.xpm
Normal file
@@ -0,0 +1,118 @@
|
||||
/* XPM */
|
||||
static char * image_name[] = {
|
||||
"48 48 67 1",
|
||||
" c None",
|
||||
". c #FFFFEFBE69A6",
|
||||
"X c #FFFFFBEEB6DA",
|
||||
"o c #082004100820",
|
||||
"O c #082008200820",
|
||||
"+ c #410345144103",
|
||||
"@ c #410345144924",
|
||||
"# c #38E33CF34103",
|
||||
"$ c #410341034103",
|
||||
"% c #000000000000",
|
||||
"& c #28A228A228A2",
|
||||
"* c #49244D345144",
|
||||
"= c #208120812081",
|
||||
"- c #8E38861738E3",
|
||||
"; c #FFFFF7DEA699",
|
||||
": c #FFFFFFFFFFFF",
|
||||
"> c #20811C712081",
|
||||
", c #30C230C230C2",
|
||||
"< c #000004100000",
|
||||
"1 c #30C22CB21040",
|
||||
"2 c #4924492430C2",
|
||||
"3 c #9E7996584924",
|
||||
"4 c #186118611861",
|
||||
"5 c #30C22CB230C2",
|
||||
"6 c #38E334D338E3",
|
||||
"7 c #79E775D630C2",
|
||||
"8 c #208124922081",
|
||||
"9 c #A699A289A699",
|
||||
"0 c #BEFBC30BBEFB",
|
||||
"q c #BEFBBEFBBEFB",
|
||||
"w c #492449244924",
|
||||
"e c #CF3CCF3CCF3C",
|
||||
"r c #DF7DDF7DDF7D",
|
||||
"t c #D75CD75CD75C",
|
||||
"y c #10400C301040",
|
||||
"u c #FFFFFBEEFFFF",
|
||||
"i c #79E779E779E7",
|
||||
"p c #104010401040",
|
||||
"a c #F7DEF3CEF7DE",
|
||||
"s c #38E338E338E3",
|
||||
"d c #79E77DF779E7",
|
||||
"f c #B6DAB6DAB6DA",
|
||||
"g c #186114511861",
|
||||
"h c #CF3CCB2BCF3C",
|
||||
"j c #A69996584924",
|
||||
"k c #9E799E799E79",
|
||||
"l c #9E799A699E79",
|
||||
"z c #EFBEF3CEEFBE",
|
||||
"x c #49244D344924",
|
||||
"c c #514451445144",
|
||||
"v c #69A669A669A6",
|
||||
"b c #30C234D330C2",
|
||||
"n c #514455555144",
|
||||
"m c #965892489658",
|
||||
"M c #EFBEEFBEEFBE",
|
||||
"N c #E79DEBADE79D",
|
||||
"B c #861786178617",
|
||||
"V c #861782078617",
|
||||
"C c #71C671C671C6",
|
||||
"Z c #AEBAAEBAAEBA",
|
||||
"A c #41033CF34103",
|
||||
"S c #B6DAB2CAB6DA",
|
||||
"D c #618565956185",
|
||||
"F c #A6999E795144",
|
||||
"G c #71C675D671C6",
|
||||
"H c #8E3882074103",
|
||||
"J c #9E7992484924",
|
||||
" ",
|
||||
" ",
|
||||
" . ",
|
||||
" X ",
|
||||
" oOO+@#####$OO% ",
|
||||
" %&*==%-;%:%X.%=>% ",
|
||||
" %,&<%%%12%%%%%%%%OO% ",
|
||||
" . %&O%%%%%%%%X%%%%%%%%=o ",
|
||||
" X%&<%%%%%%%%%3%%%%o4444566666 ",
|
||||
" %&%%%%%%%%%%%7%%%%8900qqw%%%% ",
|
||||
" -;%:oX.%%%%%%%%%%%%%%&e::::r$<%% ",
|
||||
" 128%%%%%%%%%%%%%%%%%%8e:::::t8%% ",
|
||||
" %8yX%%%%%%%%%%%%%%%%%&e:::::ui%% ",
|
||||
" . %,Op3%%%%%%%%%%%%%%%%%8e::::::rp% ",
|
||||
" X %><%%7%%%%%%%%%%%%%%%%%&e::::::as% ",
|
||||
" %>O%6%%%%%%%%%%%%%%%%%%%8e::::::ud% ",
|
||||
" -; :8X.%O%%%%%%%%%%%%%%%%%%%&e:::::::f4 ",
|
||||
" 12%gO%%%%%%%%%%%%%%%%%%%%%%%8e:::::::h8 ",
|
||||
" %gX%&%%%%%%%%%%%%%%%%%%%%%%&e:::::::h8 ",
|
||||
" %4oj%O%%%%%%%%%%%%$kkllkl9l9fz:::::::h8 ",
|
||||
" %O%%7%%%%%%%%%%%%%%xu:::::::::::::::::h8 ",
|
||||
" %oo%=%%%%%O%%%%%%%%%xu:::::::::::::::::04 ",
|
||||
" O%O%o%%%%%6%%%%%%%%%xu:::::::::::::::::k% ",
|
||||
" %%%%%%%%%%.%%%%%%%%%%xu::::::::::::::::ax% ",
|
||||
" %%%g%%%%%O%X<p%%%%%%%%xu::::::::::::::::r4% ",
|
||||
" %o%o%%%%%&%%%O%%%%%%%%cu::::::::::::::::v%% ",
|
||||
" %%%%%%%%-;%:%X.%%%%%%%xu:::::::::::::::e8%% ",
|
||||
" O%%%%%o%12y%%%%%%%%%%%x:::::::::::::::r$o%% ",
|
||||
" %%%%%%=%%%OX%%%%Obbbbbd::::::::::::::an%%%% ",
|
||||
" %%%%%%%%%%o3%%%%pmtrrrM:::::::::::::NiO%%%% ",
|
||||
" %%%o%%%y%%%7%%%%%%vr::::::::::::::ues%%%%%% ",
|
||||
" %%%g%%%o%%%o%%%%%%%,Ba:::::::::::aV&%%%%%%%. ",
|
||||
" %%%%%%%o%%%%%%%%%%%%%4CZet:::teZC4%%%%%%%%%X ",
|
||||
" %%%%O%%%%%%%%%%%%%%%%%%O8,ccc,8O%%%%%%%%%%% ",
|
||||
" y%%%<%%%%%%OOOpp#mMzaaaaaaaaazNB&%%%%%%%-; : X.",
|
||||
" %%%%<%%.%%%p4=88&8AVSetaaateSVby%%%%%%%%12 ",
|
||||
" %<%%%%%X%%%%y>&&&&&&,+xvvvx+5>O%.%%%%%%% X ",
|
||||
" %%%%%%%%OOyggsBhheeeeeeeeehhi8%%X%%%% 3 ",
|
||||
" %%%-;%:gX.5,,b+ikSfeeefSkiAg%%%%%%%% 7 ",
|
||||
" %%12%%%p8bbbbbbswcDDDcws&y%-;%:%X.% ",
|
||||
" %%%%%ooXoo=nVVBBBBBBBBBVVc4%%12%%% ",
|
||||
" %%%%%p4F44>>&xDCGBBBGCDx8y%%%%%%X% ",
|
||||
" %%%%%%yH>>>>>>=5,A2#,5=4o%%%%%%%J% ",
|
||||
" %%%%%%%O>,bbbbbbb66bb,4O%%%%%%% 7 ",
|
||||
" %%%%%%%%%og8&5bbb5&8go%%%%%%%%% ",
|
||||
" %%%%%%%%%%%%oOpppOO%%%%%%%%%%%% ",
|
||||
" ",
|
||||
" "};
|
||||
282
WPrefs.app/xpm/appearance.xpm
Normal file
282
WPrefs.app/xpm/appearance.xpm
Normal file
@@ -0,0 +1,282 @@
|
||||
/* XPM */
|
||||
static char * image_name[] = {
|
||||
"48 48 231 2",
|
||||
" c None",
|
||||
". c #59655D759E79",
|
||||
"X c #082004106185",
|
||||
"o c #000000000000",
|
||||
"O c #49245144CF3C",
|
||||
"+ c #41034D34C71B",
|
||||
"@ c #41034924C71B",
|
||||
"# c #41034514C71B",
|
||||
"$ c #38E34103C71B",
|
||||
"% c #38E33CF3BEFB",
|
||||
"& c #30C238E3BEFB",
|
||||
"* c #30C234D3BEFB",
|
||||
"= c #28A230C2B6DA",
|
||||
"- c #28A22CB2B6DA",
|
||||
"; c #28A228A2B6DA",
|
||||
": c #20812492B6DA",
|
||||
"> c #20812081AEBA",
|
||||
", c #18612081AEBA",
|
||||
"< c #18611C71AEBA",
|
||||
"1 c #18611861AEBA",
|
||||
"2 c #10401451A699",
|
||||
"3 c #10401040A699",
|
||||
"4 c #08200C30A699",
|
||||
"5 c #08200820A699",
|
||||
"6 c #082004109E79",
|
||||
"7 c #000004109E79",
|
||||
"8 c #000000009E79",
|
||||
"9 c #10400C301040",
|
||||
"0 c #000004100000",
|
||||
"q c #28A2249228A2",
|
||||
"w c #10401451AEBA",
|
||||
"e c #BEFBBEFBE79D",
|
||||
"r c #96589248D75C",
|
||||
"t c #30C22CB2AEBA",
|
||||
"y c #30C234D330C2",
|
||||
"u c #104014511040",
|
||||
"i c #28A228A2AEBA",
|
||||
"p c #9E799E79D75C",
|
||||
"a c #B6DAB6DADF7D",
|
||||
"s c #59655965BEFB",
|
||||
"d c #38E338E338E3",
|
||||
"f c #492449244924",
|
||||
"g c #492445144924",
|
||||
"h c #FFFFFFFFFFFF",
|
||||
"j c #8617F3CE9658",
|
||||
"k c #8E38F3CE9658",
|
||||
"l c #9658F3CE9658",
|
||||
"z c #A699F3CE9E79",
|
||||
"x c #AEBAF3CE9E79",
|
||||
"c c #B6DAF3CE9E79",
|
||||
"v c #C71BF3CE9E79",
|
||||
"b c #CF3CF3CEA699",
|
||||
"n c #D75CF3CEA699",
|
||||
"m c #D75CF3CE9E79",
|
||||
"M c #DF7DF3CE9E79",
|
||||
"N c #EFBEF3CE9658",
|
||||
"B c #EFBEEBAD9658",
|
||||
"V c #F7DEDB6C9E79",
|
||||
"C c #F7DED75C8617",
|
||||
"Z c #8E38F3CE9E79",
|
||||
"A c #9E79F3CE9658",
|
||||
"S c #AEBAF3CEA699",
|
||||
"D c #BEFBF3CEAEBA",
|
||||
"F c #DF7DF3CEA699",
|
||||
"G c #E79DEFBE9E79",
|
||||
"H c #F7DED75C9658",
|
||||
"J c #F7DEDB6C8E38",
|
||||
"K c #8E38F3CEB6DA",
|
||||
"L c #9658F3CEB6DA",
|
||||
"P c #9E79F3CEAEBA",
|
||||
"I c #A699F3CEAEBA",
|
||||
"U c #D75CF3CEAEBA",
|
||||
"Y c #CF3CF3CEB6DA",
|
||||
"T c #D75CF3CEB6DA",
|
||||
"R c #E79DF3CEB6DA",
|
||||
"E c #E79DF3CEAEBA",
|
||||
"W c #E79DEBADAEBA",
|
||||
"Q c #F7DEDB6CAEBA",
|
||||
"! c #9658F3CEBEFB",
|
||||
"~ c #9658F3CEC71B",
|
||||
"^ c #A699F3CEC71B",
|
||||
"/ c #AEBAF3CEBEFB",
|
||||
"( c #C71BF3CEB6DA",
|
||||
") c #D75CF3CEC71B",
|
||||
"_ c #E79DF3CEBEFB",
|
||||
"` c #EFBEF3CEB6DA",
|
||||
"' c #EFBEDF7DB6DA",
|
||||
"] c #9E79F3CED75C",
|
||||
"[ c #C71BF3CEC71B",
|
||||
"{ c #CF3CF3CECF3C",
|
||||
"} c #D75CF3CECF3C",
|
||||
"| c #EFBEF3CEC71B",
|
||||
" . c #EFBEE79DC71B",
|
||||
".. c #F7DED34CBEFB",
|
||||
"X. c #F7DED75CA699",
|
||||
"o. c #F7DECB2B9E79",
|
||||
"O. c #9E799E799E79",
|
||||
"+. c #9E799A699E79",
|
||||
"@. c #965896589658",
|
||||
"#. c #965892489658",
|
||||
"$. c #8E388E388E38",
|
||||
"%. c #8E388A288E38",
|
||||
"&. c #861786178617",
|
||||
"*. c #861782078617",
|
||||
"=. c #79E77DF779E7",
|
||||
"-. c #9E79F3CECF3C",
|
||||
";. c #A699F3CECF3C",
|
||||
":. c #AEBAF3CECF3C",
|
||||
">. c #BEFBF3CED75C",
|
||||
",. c #D75CF3CED75C",
|
||||
"<. c #E79DF3CECF3C",
|
||||
"1. c #EFBEF3CECF3C",
|
||||
"2. c #F7DEEBADCF3C",
|
||||
"3. c #F7DEE38DCF3C",
|
||||
"4. c #F7DEC30BAEBA",
|
||||
"5. c #79E779E779E7",
|
||||
"6. c #AEBAF3CEDF7D",
|
||||
"7. c #B6DAF3CEDF7D",
|
||||
"8. c #CF3CF3CED75C",
|
||||
"9. c #DF7DF3CED75C",
|
||||
"0. c #EFBEF3CEDF7D",
|
||||
"q. c #F7DECF3CBEFB",
|
||||
"w. c #F7DED34CB6DA",
|
||||
"e. c #F7DEBAEAA699",
|
||||
"r. c #71C675D671C6",
|
||||
"t. c #9E79EFBEE79D",
|
||||
"y. c #AEBAF3CEE79D",
|
||||
"u. c #C71BF3CEDF7D",
|
||||
"i. c #DF7DF3CEDF7D",
|
||||
"p. c #EFBEEBADE79D",
|
||||
"a. c #F7DEEBADD75C",
|
||||
"s. c #F7DEDB6CCF3C",
|
||||
"d. c #F7DEC71BBEFB",
|
||||
"f. c #F7DEBAEAB6DA",
|
||||
"g. c #F7DEB6DAA699",
|
||||
"h. c #71C671C671C6",
|
||||
"j. c #9E79EFBEEFBE",
|
||||
"k. c #AEBAEFBEEFBE",
|
||||
"l. c #C71BF3CEEFBE",
|
||||
"z. c #DF7DEFBEEFBE",
|
||||
"x. c #E79DEFBEEFBE",
|
||||
"c. c #F7DEE38DDF7D",
|
||||
"v. c #F7DED34CCF3C",
|
||||
"b. c #69A66DB669A6",
|
||||
"n. c #A699E79DEFBE",
|
||||
"m. c #AEBAE79DEFBE",
|
||||
"M. c #BEFBE79DF7DE",
|
||||
"N. c #CF3CEBADF7DE",
|
||||
"B. c #D75CEBADF7DE",
|
||||
"V. c #E79DEBADF7DE",
|
||||
"C. c #F7DEDF7DE79D",
|
||||
"Z. c #F7DED75CDF7D",
|
||||
"A. c #F7DEC71BD75C",
|
||||
"S. c #F7DECF3CC71B",
|
||||
"D. c #F7DEB2CAAEBA",
|
||||
"F. c #F7DEAAAAAEBA",
|
||||
"G. c #A699E38DEFBE",
|
||||
"H. c #BEFBDB6CF7DE",
|
||||
"J. c #D75CE79DF7DE",
|
||||
"K. c #F7DED75CE79D",
|
||||
"L. c #F7DEB2CAB6DA",
|
||||
"P. c #69A669A669A6",
|
||||
"I. c #618565956185",
|
||||
"U. c #AEBADB6CF7DE",
|
||||
"Y. c #B6DAD75CF7DE",
|
||||
"T. c #D75CDB6CF7DE",
|
||||
"R. c #F7DEC71BE79D",
|
||||
"E. c #F7DEAEBABEFB",
|
||||
"W. c #F7DEAAAACF3C",
|
||||
"Q. c #9658D75CF7DE",
|
||||
"!. c #C71BD34CF7DE",
|
||||
"~. c #DF7DD75CF7DE",
|
||||
"^. c #EFBECF3CF7DE",
|
||||
"/. c #F7DEBAEAE79D",
|
||||
"(. c #F7DEAEBAD75C",
|
||||
"). c #F7DE9E79C71B",
|
||||
"_. c #618561856185",
|
||||
"`. c #9658CB2BF7DE",
|
||||
"'. c #A699D75CF7DE",
|
||||
"]. c #B6DAD34CF7DE",
|
||||
"[. c #CF3CC30BF7DE",
|
||||
"{. c #E79DCF3CF7DE",
|
||||
"}. c #F7DEBEFBF7DE",
|
||||
"|. c #F7DEBAEAEFBE",
|
||||
" X c #F7DE9658CF3C",
|
||||
".X c #59655D755965",
|
||||
"XX c #8E38BAEAF7DE",
|
||||
"oX c #9658B6DAF7DE",
|
||||
"OX c #A699B6DAF7DE",
|
||||
"+X c #AEBAB2CAF7DE",
|
||||
"@X c #B6DAB6DAF7DE",
|
||||
"#X c #BEFBBAEAF7DE",
|
||||
"$X c #C71BCB2BF7DE",
|
||||
"%X c #D75CCB2BF7DE",
|
||||
"&X c #F7DEBAEAF7DE",
|
||||
"*X c #F7DEB2CAE79D",
|
||||
"=X c #F7DEA699DF7D",
|
||||
"-X c #F7DEA289D75C",
|
||||
";X c #F7DE9A69D75C",
|
||||
":X c #596559655965",
|
||||
">X c #E79DBAEAF7DE",
|
||||
",X c #DF7DBAEAF7DE",
|
||||
"<X c #F7DEAEBAE79D",
|
||||
"1X c #8617AEBAF7DE",
|
||||
"2X c #9658AEBAF7DE",
|
||||
"3X c #9E79AAAAF7DE",
|
||||
"4X c #A699A699F7DE",
|
||||
"5X c #AEBAA289F7DE",
|
||||
"6X c #C71BB2CAF7DE",
|
||||
"7X c #DF7DB2CAF7DE",
|
||||
"8X c #E79DAAAAF7DE",
|
||||
"9X c #EFBEA289F7DE",
|
||||
"0X c #EFBEA289EFBE",
|
||||
"qX c #F7DE9E79E79D",
|
||||
"wX c #F7DE9658D75C",
|
||||
"eX c #514455555144",
|
||||
"rX c #79E7A289F7DE",
|
||||
"tX c #8617A289F7DE",
|
||||
"yX c #8E38A289F7DE",
|
||||
"uX c #9E799A69F7DE",
|
||||
"iX c #AEBA9658F7DE",
|
||||
"pX c #B6DA9E79F7DE",
|
||||
"aX c #E79DA699F7DE",
|
||||
"sX c #EFBE9E79EFBE",
|
||||
"dX c #EFBE9A69EFBE",
|
||||
"fX c #EFBE8E38E79D",
|
||||
"gX c #514451445144",
|
||||
"hX c #38E334D338E3",
|
||||
"jX c #49244D344924",
|
||||
"kX c #38E33CF338E3",
|
||||
"lX c #410341034103",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . o o ",
|
||||
"O + @ # $ % & & * = - ; : > , < 1 2 3 4 5 6 7 8 X . 8 8 8 8 8 8 8 8 8 X 9 0 o ",
|
||||
"O + @ # $ % & & * = - ; : : , < 1 2 3 4 5 5 7 8 X . 8 8 8 8 8 8 8 8 8 X q 9 o ",
|
||||
"O + @ # $ % & & & = - ; : > > < 1 w 3 4 5 6 7 8 X . 8 8 e r t r e 8 8 X y u o ",
|
||||
"O + @ # $ % & & = = = ; : > , < 1 2 3 3 5 5 7 8 X . 8 8 i p a p i 8 8 X y u o ",
|
||||
"O + @ # $ % & & & = - ; : > > < 1 2 3 4 5 6 7 8 X . 8 8 6 s e s 6 8 8 X d u o ",
|
||||
"+ + @ # $ % & & = = - ; : > , < 1 2 3 4 5 6 7 8 X . 8 8 i p a p i 8 8 X y u o ",
|
||||
"O + @ # $ % & & & = - ; : : < < 1 2 3 4 5 5 7 8 X . 8 8 e r t r e 8 7 X d u o ",
|
||||
"+ + @ # $ % & & = = - ; : > < < 1 2 3 4 5 6 7 8 X . 8 8 8 8 8 8 8 8 8 X d u o ",
|
||||
"O + @ # $ % & & & = - ; : > > < w 2 3 4 5 6 7 8 X . 8 8 8 8 8 8 8 8 7 X d u o ",
|
||||
"X X X X X X X X X X X X X X X X X X X X X X X X X . X X X X X X X X X X y u 0 ",
|
||||
" f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f g y u o ",
|
||||
" y d y y d y y d y y d y y d y d y d y y d y y d y y d y y d y y d y y q u o ",
|
||||
" u u u u u u u u u u u u u u u u u u u u u u u u u h h h h h h h h h h h h h h h h h h h h o o ",
|
||||
" o 0 o 0 o o 0 o o 0 o o 0 o o o o 0 o 0 o o 0 o o h j j j k l z x c v b n m M M N B V C y 9 0 ",
|
||||
" o h Z Z A z z S S D b b b F F F G B H J d q 9 ",
|
||||
" o h K L P L I I D n U Y T R E W W Q V J d y u ",
|
||||
" o h ! ! ! ~ ^ / ( U T ) _ ` ` W ' Q V H d y u ",
|
||||
" h h h h h h h h h h h h h h h h h ! ~ ] ^ / ( [ [ { } | | | ...Q X.o.d y u ",
|
||||
" o h O.O.O.+.+.@.#.#.$.%.&.&.*.=.=.h -.;.:.:.>.[ ) } ,.<.<.1.2.3...Q X.4.d y u ",
|
||||
" o h O.O.+.+.@.#.#.$.%.&.&.*.=.5.5.h ] 6.7.7.>.8.8.9.9.9.0.1.2.3.q.w.4.e.d y u ",
|
||||
" o h O.+.@.@.#.$.$.%.&.*.*.=.5.5.r.h t.y.7.7.u.u.i.i.i.0.p.a.s.s...d.f.g.d y u ",
|
||||
" o h +.@.@.#.$.$.%.&.*.*.=.5.5.r.h.h j.k.7.l.l.l.z.x.o x.p.c.s.v.q.d.f.g.d d u ",
|
||||
" o h @.@.#.$.%.%.&.*.*.=.5.r.r.h.b.h n.m.M.N.N.B.B.V.o 0 p.C.Z.A.S.d.D.F.d y u ",
|
||||
" o h #.#.$.$.%.&.*.*.=.5.5.r.h.b.b.h n.G.H.M.N.N.J.J.o o o C.K.A.S.d.L.F.d y u ",
|
||||
" o h #.$.%.%.&.*.=.=.5.r.r.h.b.P.I.h U.U.Y.Y.M.N.T.J.o o o o K.R.A.E.W.L.d y u ",
|
||||
" o h $.%.&.&.*.=.=.5.r.r.h.b.P.P.I.h Q.Q.U.U.Y.H.!.~.o o o ^.R./.A.(.W.).d d u ",
|
||||
" o h %.&.&.*.=.5.5.r.h.h.b.P.I.I._.h `.`.'.U.].Y.!.[.{.{.o }.|././.(.W. Xd y u ",
|
||||
" o h &.*.*.=.5.5.r.h.h.b.P.I.I._..Xh XXoXOX+X@X#X#X$X[.%X0 o &X|.*X=X-X;Xd y u ",
|
||||
" o h *.*.=.5.5.r.h.b.b.P.I.I._..X:Xh XXoXoXOX+X+X+X$X[.>X,X>X&X&X<X=X-X;Xd y u ",
|
||||
" o h *.=.5.5.r.h.h.b.P.I._._..X.X:Xh 1X1X2X3X4X5X5X@X6X7X7X8X8X9X0XqXwXwXd y u ",
|
||||
" o h =.5.r.r.h.b.P.P.I._._..X:XeXeXh rXtXtXyXuXiXpXpXpX7XaX9X9X9XsXdXfXwXd y u ",
|
||||
" o h 5.r.r.h.b.P.P.I._._..X:X:XeXgXh d y d d d d d d y d hXy d d d d d hXd y u ",
|
||||
" o h r.r.h.b.P.P.I._..X.X:XeXeXgXjXjXf o f f f g g g f g f f f g g g g g g hXu ",
|
||||
" o h h.h.b.P.I.I._._..X:XeXgXgXjXf f g o g kXy d y d y y y d y d y y d y y q 9 ",
|
||||
" o h h.b.P.I.I._..X.X:XeXgXgXjXf f g lXo d q u u u u u u u u u u u u u u u 9 0 ",
|
||||
" o h o o o o o o o o o o o o o o o o o o d u 0 o o o o o o o o o o o o o o o o ",
|
||||
" o u y g g f f f f f f f f f f f f f f g y u o ",
|
||||
" 0 9 q y y y d y y d y y d y d y d y d y q u o ",
|
||||
" o 0 9 u u u u u u u u u u u u u u u u u 9 0 o ",
|
||||
" o o o o o o 0 o 0 o 0 o o o o o o o o o o ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
275
WPrefs.app/xpm/clip.xpm
Normal file
275
WPrefs.app/xpm/clip.xpm
Normal file
@@ -0,0 +1,275 @@
|
||||
/* XPM */
|
||||
static char * image_name[] = {
|
||||
"48 48 224 2",
|
||||
" c None",
|
||||
". c #E79DE79DE79D",
|
||||
"X c #DF7DE38DDF7D",
|
||||
"o c #DF7DDF7DDF7D",
|
||||
"O c #D75CDF7DDF7D",
|
||||
"+ c #D75CD75CD75C",
|
||||
"@ c #D75CD34CD75C",
|
||||
"# c #CF3CCF3CCF3C",
|
||||
"$ c #CF3CCB2BCF3C",
|
||||
"% c #C71BC71BC71B",
|
||||
"& c #C71BC30BC71B",
|
||||
"* c #BEFBBEFBBEFB",
|
||||
"= c #BEFBBAEABEFB",
|
||||
"- c #B6DAB6DAB6DA",
|
||||
"; c #000000000000",
|
||||
": c #D75CDB6CD75C",
|
||||
"> c #B6DAB2CAB6DA",
|
||||
", c #EFBEF3CEF7DE",
|
||||
"< c #EFBEF3CEEFBE",
|
||||
"1 c #E79DEFBEEFBE",
|
||||
"2 c #CF3C9E79A699",
|
||||
"3 c #61853CF338E3",
|
||||
"4 c #86177DF78E38",
|
||||
"5 c #A699AAAAAEBA",
|
||||
"6 c #86178A288E38",
|
||||
"7 c #861786178E38",
|
||||
"8 c #8E388A289658",
|
||||
"9 c #D75CA699AEBA",
|
||||
"0 c #79E714512081",
|
||||
"q c #61855D755965",
|
||||
"w c #69A669A671C6",
|
||||
"e c #AEBAAEBAAEBA",
|
||||
"r c #861786178617",
|
||||
"t c #79E775D68617",
|
||||
"y c #8E3882079658",
|
||||
"u c #96588E38A699",
|
||||
"i c #96589248A699",
|
||||
"p c #8E3886179E79",
|
||||
"a c #861782079658",
|
||||
"s c #B6DAA289AEBA",
|
||||
"d c #9E792CB238E3",
|
||||
"f c #38E3249230C2",
|
||||
"g c #9E799E79A699",
|
||||
"h c #71C675D679E7",
|
||||
"j c #AEBAAAAAAEBA",
|
||||
"k c #9E799A69AEBA",
|
||||
"l c #C71BBEFBC71B",
|
||||
"z c #A6999A69AEBA",
|
||||
"x c #A699A699AEBA",
|
||||
"c c #BEFB659569A6",
|
||||
"v c #41031C712081",
|
||||
"b c #514455555965",
|
||||
"n c #69A669A679E7",
|
||||
"m c #A699A699A699",
|
||||
"M c #8E388A28A699",
|
||||
"N c #B6DAAAAABEFB",
|
||||
"B c #C71B5D756185",
|
||||
"V c #618514512081",
|
||||
"C c #492449245144",
|
||||
"Z c #AEBAAEBAB6DA",
|
||||
"A c #69A6659571C6",
|
||||
"S c #8E38AAAAB6DA",
|
||||
"D c #B6DA208130C2",
|
||||
"F c #9E7975D679E7",
|
||||
"G c #9E7934D338E3",
|
||||
"H c #410330C230C2",
|
||||
"J c #71C66DB679E7",
|
||||
"K c #6185618569A6",
|
||||
"L c #A699A289A699",
|
||||
"P c #BEFB34D338E3",
|
||||
"I c #492418612081",
|
||||
"U c #596555556185",
|
||||
"Y c #59655D7569A6",
|
||||
"T c #9E799E799E79",
|
||||
"R c #861782078617",
|
||||
"E c #79E771C68617",
|
||||
"W c #A69959656185",
|
||||
"Q c #410338E34103",
|
||||
"! c #596559656185",
|
||||
"~ c #9E799A699E79",
|
||||
"^ c #79E775D679E7",
|
||||
"/ c #CF3CD75CD75C",
|
||||
"( c #CF3CD34CD75C",
|
||||
") c #C71BCB2BCF3C",
|
||||
"_ c #BEFBC30BBEFB",
|
||||
"` c #B6DABAEABEFB",
|
||||
"' c #96589A699E79",
|
||||
"] c #8E389A699658",
|
||||
"[ c #965896589658",
|
||||
"{ c #71C675D671C6",
|
||||
"} c #618561856185",
|
||||
"| c #514451445965",
|
||||
" . c #38E33CF34103",
|
||||
".. c #30C234D34103",
|
||||
"X. c #492445144924",
|
||||
"o. c #965892489658",
|
||||
"O. c #8E3892489E79",
|
||||
"+. c #96588E389658",
|
||||
"@. c #71C682079E79",
|
||||
"#. c #8E388E388E38",
|
||||
"$. c #965882076185",
|
||||
"%. c #861775D669A6",
|
||||
"&. c #9E79A699A699",
|
||||
"*. c #8E388A288E38",
|
||||
"=. c #596559655965",
|
||||
"-. c #8E3892489658",
|
||||
";. c #861775D69658",
|
||||
":. c #A6998207A699",
|
||||
">. c #69A6618569A6",
|
||||
",. c #00000C301040",
|
||||
"<. c #000010401040",
|
||||
"1. c #000010401861",
|
||||
"2. c #8E389A69A699",
|
||||
"3. c #79E786179E79",
|
||||
"4. c #86178E389E79",
|
||||
"5. c #8E388E389658",
|
||||
"6. c #965882079E79",
|
||||
"7. c #79E779E779E7",
|
||||
"8. c #596551445144",
|
||||
"9. c #000018611861",
|
||||
"0. c #00001C712081",
|
||||
"q. c #79E78A28A699",
|
||||
"w. c #71C67DF79658",
|
||||
"e. c #69A67DF79658",
|
||||
"r. c #69A675D68E38",
|
||||
"t. c #5965659579E7",
|
||||
"y. c #38E33CF34924",
|
||||
"u. c #28A228A228A2",
|
||||
"i. c #69A665958617",
|
||||
"p. c #A6998207B6DA",
|
||||
"a. c #0000249228A2",
|
||||
"s. c #38E355555965",
|
||||
"d. c #000028A230C2",
|
||||
"f. c #00002CB230C2",
|
||||
"g. c #104030C238E3",
|
||||
"h. c #69A686178E38",
|
||||
"j. c #30C238E34103",
|
||||
"k. c #5144596569A6",
|
||||
"l. c #28A22CB238E3",
|
||||
"z. c #51444D344103",
|
||||
"x. c #8E3875D66185",
|
||||
"c. c #96587DF79658",
|
||||
"v. c #9E797DF7A699",
|
||||
"b. c #00002CB238E3",
|
||||
"n. c #28A255555965",
|
||||
"m. c #000030C238E3",
|
||||
"M. c #000034D34103",
|
||||
"N. c #10403CF34103",
|
||||
"B. c #596586178E38",
|
||||
"V. c #38E338E34924",
|
||||
"C. c #18611C712081",
|
||||
"Z. c #618555554103",
|
||||
"A. c #79E76DB65144",
|
||||
"S. c #79E775D669A6",
|
||||
"D. c #2081208128A2",
|
||||
"F. c #410341034103",
|
||||
"G. c #00003CF34103",
|
||||
"H. c #492471C679E7",
|
||||
"J. c #492475D679E7",
|
||||
"K. c #CF3CDB6CDF7D",
|
||||
"L. c #104045144924",
|
||||
"P. c #38E33CF35144",
|
||||
"I. c #410349245965",
|
||||
"U. c #28A230C24103",
|
||||
"Y. c #618559655144",
|
||||
"T. c #BEFBAEBAC71B",
|
||||
"R. c #492441035144",
|
||||
"E. c #000041034924",
|
||||
"W. c #492479E78617",
|
||||
"Q. c #000049245144",
|
||||
"!. c #596586179658",
|
||||
"~. c #186159656185",
|
||||
"^. c #104051445965",
|
||||
"/. c #492449245965",
|
||||
"(. c #49244D346185",
|
||||
"). c #61855D7569A6",
|
||||
"_. c #596559655144",
|
||||
"`. c #2081249230C2",
|
||||
"'. c #CF3CC30BD75C",
|
||||
"]. c #79E769A679E7",
|
||||
"[. c #00004D345965",
|
||||
"{. c #000051445965",
|
||||
"}. c #492486178E38",
|
||||
"|. c #000055556185",
|
||||
" X c #69A69E79A699",
|
||||
".X c #C71BD34CD75C",
|
||||
"XX c #208169A671C6",
|
||||
"oX c #618596589E79",
|
||||
"OX c #492455556185",
|
||||
"+X c #4924555569A6",
|
||||
"@X c #20811C7128A2",
|
||||
"#X c #30C234D34924",
|
||||
"$X c #C71BBAEAC71B",
|
||||
"%X c #0000596569A6",
|
||||
"&X c #00005D7569A6",
|
||||
"*X c #514492489E79",
|
||||
"=X c #1040618569A6",
|
||||
"-X c #B6DACF3CCF3C",
|
||||
";X c #61859E79A699",
|
||||
":X c #51445D7571C6",
|
||||
">X c #5965618571C6",
|
||||
",X c #186118612081",
|
||||
"<X c #410345145144",
|
||||
"1X c #FFFFFFFFFFFF",
|
||||
"2X c #8617FFFF4924",
|
||||
"3X c #104034D338E3",
|
||||
"4X c #186130C230C2",
|
||||
"5X c #28A230C230C2",
|
||||
"6X c #000004100820",
|
||||
"7X c #104014511861",
|
||||
"8X c #186128A228A2",
|
||||
"9X c #104038E34103",
|
||||
"0X c #59656DB68617",
|
||||
"qX c #2081249228A2",
|
||||
"wX c #AEBA96589E79",
|
||||
"eX c #A6998E38AEBA",
|
||||
"rX c #8E3871C68E38",
|
||||
"tX c #30C230C230C2",
|
||||
"yX c #28A228A230C2",
|
||||
"uX c #69A66DB669A6",
|
||||
"iX c #596561855965",
|
||||
"pX c #BEFBFFFF9658",
|
||||
"aX c #410341034924",
|
||||
"sX c #492449244924",
|
||||
" ",
|
||||
" . . . . . . . . . . . . . . . . . . . ",
|
||||
" . . . X o O O + @ # $ $ % & * * = - ; ",
|
||||
" . . X o o : + @ # $ $ % & * * = - > ; ",
|
||||
" . X o O , < < , , , < 1 1 2 3 4 > > ; ",
|
||||
" . o o < 5 6 7 8 8 8 6 6 9 0 q w > e ; ",
|
||||
" . o O , r t y u i p a s d f g h e j ; ",
|
||||
" . O + , 7 p k l z k x c v b - n j m ; ",
|
||||
" . + @ , 7 M N B d u 2 V C w Z A j m ; ",
|
||||
" . @ @ < 7 p S D D F G H A J Z K m L ; ",
|
||||
" . @ # < r t p Z P P I U J J j Y L T ; ",
|
||||
" . # $ < R J t E W 0 Q A J J x ! T ~ ; ",
|
||||
" . $ % 1 R t ^ t h b A ^ ^ ^ x b T ~ ; ",
|
||||
" . % % . / : ( ) % _ ` - Z ' ] C ~ [ ; ",
|
||||
" . % & { } } b | K C ... .X.C .[ o.; ",
|
||||
" . & * = Z e ~ O.+.@.E 7 T w o.[ o.#.; ",
|
||||
" . * = = o.r r r r $.@.$.@.%.w o.+.#.; ",
|
||||
" . = = - > e e j x &.L g ~ ' o.o.#.*.; ",
|
||||
" . = - > e e j m m L ~ ~ ~ [ +.#.*.r ; ",
|
||||
" . ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
"O O + @ # $ $ % & * * = - ; . . . X o o O + @ # $ $ % & * * = - =.. . . X o O O + @ # $ $ % & * ",
|
||||
"O + @ # # $ % & * * = - > ; . . ; ; O ; ; @ # # $ % & * * = - > ; . . X o o : + @ # # $ % & * * ",
|
||||
"# L i &.-.j & * * = - > > ; . X ; o ; + ; ; # $ - w ;.:.>.^ > > ; . X o ,.<.<.1.1.1.1.1.1.1.<.<.",
|
||||
"g 2.3.3.@.4.5.[ = - > > e ; . o o O + @ # # $ & n 6.7.- > 8.> e ; . o o 9.0.0.0.0.0.0.0.0.0.0.0.",
|
||||
"q.3.w.e.r.t.y.u.- > > e j ; . o O + @ # # $ * i.p.E >.q j } e j ; . o O 0.a.s._ s.d.f.g.h.2.g.a.",
|
||||
"j.k.r.k.l.l.z.x.%.r ^ j j ; . O + @ # # $ - c.v.{ = > R [ *.j j ; . O + f.f.b.h.( n.m.M.N.B.f.f.",
|
||||
"j.V...C.Z.x.A.S.^ U D.m m ; . + @ @ # $ - c.v.o.= - > =.F.T m m ; . + @ M.M.G.H.J.K.n.G.L.B.G.M.",
|
||||
"P.I.U.u.z.A.{ .D.Y.u.m L ; . @ @ # $ > T.c.~ = - - ^ R.=.L m L ; . @ @ G.E.E.W.Q.!.K.~.^.!.E.E.",
|
||||
"/.(...u.F.)...l._.y.`.L T ; . @ # $ ~ '.].T = - e K E } m m L T ; . @ # [.[.{.}.|.|. X.XXXoX{.[.",
|
||||
"OX+XV.@X@X| y.l.#XP.l.T T ; . # $ +.$X>.> = - e ).v.).j m L T T ; . # $ %X&X&X*X=X%X%XS -X;X&X&X",
|
||||
":X>XI.OX,XC <XU.U.C R ~ ~ ; . $ % . 8.- 1X- j E :.t j m L 2X~ ~ ; . $ % ^.3X4X&.5X6X; 6XC.7X8X9X",
|
||||
"t.0XOX+XU./.j.qX*.T ~ ~ [ ; . % % ).wX= 1X1XeXrXR j m L T 2X2X[ ; . % % ; ; C.tXtX6X; ; ; ; ; ; ",
|
||||
"0Xr.k.k.#XP.V.yXuXT ~ [ o.; . % & ~ uX- 1X; 1X[ j m L T T ~ [ o.; . % & ; ; ; ; ; ; ; ; ; ; ; ; ",
|
||||
"! 0X:X:X#Xl. .iX^ ~ [ o.#.; . & 9 _ uX} 1X; ; 1Xm L g ~ T pXpX#.; . & * ; ; ; ; ; ; ; ; ; ; ; ; ",
|
||||
"> r aXy.sX} 7.T ~ [ o.#.#.; . _ 6X- > wX1X; ; ; 1XT wX~ [ o.#.#.; . * = ; ; ; ; ; ; ; ; ; ; ; ; ",
|
||||
"Z e j m L L ~ ~ [ [ o.#.*.; . ` ; - > e 1X; ; ; ; 1X' [ [ 2X2X*.; . = = - > > e j m L L T ~ [ o.",
|
||||
"e j m L L T ~ [ o.+.#.*.r ; . = - > e e 1X; ; ; ; ; 1Xo.o.#.2Xr ; . = - > e e j m L L T ~ [ o.o.",
|
||||
"=.; ; ; ; ; ; ; ; ; ; ; ; =.. ; ; ; ; ; 1X; ; ; ; ; ; 1X; ; ; ; ; . ; ; ; ; ; ; ; ; ; ; ; ; ; ; ",
|
||||
" 1X; ; ; ; ; ; ; 1X ",
|
||||
" 1X; ; ; ; 1X1X1X1X1X ",
|
||||
" 1X; ; 1X; 1X ",
|
||||
" 1X; 1X1X; ; 1X ",
|
||||
" 1X1X 1X; 1X ",
|
||||
" 1X 1X; ; 1X ",
|
||||
" 1X; 1X ",
|
||||
" 1X; 1X ",
|
||||
" 1X1X "};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user