/*
* blwmrc.cc
*
* Copyright (C) 1995, 1996, 1997, 1997, 1998, 1999, 2000, 2001, 2002 Kenichi Kourai
* Copyright (C) 1999, 2000, 2001, 2002 Luiz Blanes
*
* 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 blwm; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include "main.h"
#include "taskbar.h"
#include "util.h"
#include "parse.h"
#include "blwmrc.h"
#include "blwm.h"
#include "key.h"
#include "desktop.h"
/*
* Default values
*/
int DoubleClickTime = 500;
int DoubleClickRange = 5;
Bool TitlebarMotion = True;
int TitlebarMotionSpeed = 8;
int MenuDelayTime = 300;
int MenuDelayTime2 = 300;
int PagingMovement = 100;
Point TopLeftPage = Point(0, 0);
Dim PagingSize = Dim(1, 1);
int PagingSpeed = 10;
InternGeom PagerGeometry = InternGeom(0, 0, 48, 48, Point(0, 0));
int EdgeResistance = 50;
int SnappingMove = 5;
int SnappingEdges = 5;
Bool NoResizeOverTaskbar = False;
Bool SmartPlacement = False;
Bool UseTaskbar = True;
Taskbar::TaskbarPos TaskbarPosition = Taskbar::BOTTOM;
unsigned int TaskbarRows = 1;
Bool OnTopTaskbar = True;
char* WallPaper = "Windows98";
char* LocaleName = "pt_BR";
Bool UseBoldFont = False;
Bool UseExitDialog = False;
Bool UseConfirmDialog = False;
Bool UsePager = False;
Bool OpaqueMove = True;
Bool OpaqueResize = True;
Bool FullOpaque = True;
Bool ClickToFocus = True;
Bool FocusOnMap = False;
Bool ClickingRaises = True;
Bool NoDesktopFocus = False;
Bool AutoRaise = False;
Bool UseClock = True;
char* ClockLocaleName = NULL;
int AutoRaiseDelay = 100;
char* ImagePath = IMGDIR;
Bool TaskbarAutoHide = False;
Bool RestoreMinimize = False;
Bool RestartOnFailure = True;
Bool GradMenuMap = True;
int GradMenuMapSpeed = 3;
Bool GradTaskbarMotion = True;
int GradTaskbarMotionSpeed = 6;
Bool GradTitlebar = True;
int GradTitlebarColors = 50;
Bool OnTopPager = False;
double ShiftMoveRatio = 1.0;
double CtrlMoveRatio = 1.0;
int HourGlassTime = 1000;
int UseInfoDisplay = False;
Blwm::GradStyle GradWindowMapStyle = Blwm::Normal;
int GradWindowMapSpeed = 10;
Bool UseDebugger = True;
int TooltipDelayTime = 300;
int TooltipMotionSpeed = 7;
int TooltipDisplayTime = 8000;
unsigned int NoFocusChangeMask = ShiftMask;
int TaskbarShowDelay = 0;
int TaskbarHideDelay = 500;
Bool TaskbarButtonInScr = False;
Bool AllowRemoteCmd = False;
Bool DisableDesktopChange = False;
/*
* Default message catalogs
*/
char* StartButtonTitle = "Iniciar";
char* StartButtonMessage = "Clique aqui para iniciar o Blanes 2000.";
char* MinimizeButtonMessage = "Minimizar";
char* MaximizeButtonMessage = "Maximizar";
char* CloseButtonMessage = "Fechar";
char* RestoreButtonMessage = "Restaurar";
char* ClockFormat = "%R";
char* ClockMessageFormat = "%A, %e %B de %Y";
/*
* Default sizes
*/
int IconSize = 32;
int FrameTitleHeight = Blwm::BUTTON_HEIGHT + 4;
int FrameBorderWidth = 2;
int TaskbarButtonHeight = 22;
int IndicatorSize = 16;
int IconVerticalSpacing = 43;
int IconHorizontalSpacing = 43;
/*
* Images
*/
char* TitlebarImage = NULL;
char* TitlebarActiveImage = NULL;
char* FrameImage = NULL;
char* FrameActiveImage = NULL;
char* TaskbarImage = NULL;
char* MenuImage = NULL;
char* MenuActiveImage = NULL;
char* PagerImage = NULL;
char* DialogImage = NULL;
char* SwitcherImage = NULL;
char* StartMenuLogoImage = NULL;
/*
* Default icons
*/
char* DefaultIcon = NULL;
char* DefaultLargeIcon = NULL;
char* DefaultShortcutIcon = NULL;
/*
* Default colors
*/
XColor IconForeColor; // black
XColor IconBackColor; // white
XColor IconStringColor; // white
XColor IconStringActiveColor; // white
XColor MiniatureColor; // black
XColor MiniatureActiveColor; // white
XColor TitlebarColor; // darkGray
XColor TitlebarColor2; // grey (not gray!)
XColor TitlebarActiveColor; // blue
XColor TitlebarActiveColor2; // lightBlue
XColor TitleStringColor; // gray
XColor TitleStringActiveColor; // white
XColor MenuColor; // gray
XColor MenuActiveColor; // blue
XColor MenuStringColor; // black
XColor MenuStringActiveColor; // white
XColor DialogColor; // gray
XColor DialogStringColor; // black
XColor SwitcherColor; // gray
XColor SwitcherActiveColor; // blue
XColor SwitcherStringColor; // black
XColor FrameColor; // gray
XColor FrameActiveColor; // gray
XColor PagerColor; // gray
XColor PagerActiveColor; // darkGray
XColor ButtonColor; // gray
XColor ButtonActiveColor; // gray
XColor ButtonStringColor; // black
XColor ButtonStringActiveColor; // black
XColor TaskbarColor; // gray
XColor ClockStringColor; // black
XColor DesktopColor; // blue
XColor DesktopActiveColor; // blue
XColor StartMenuLogoColor; // blue
XColor CursorColor; // white
XColor TooltipColor; // yellow
XColor TooltipStringColor; // black
/*
* Default fonts
*/
char* DefaultFont = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*";
char* TitleFont = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*";
char* TaskbarFont = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*";
char* TaskbarBoldFont = "-*-*-bold-r-normal-*-14-*-*-*-*-*-*-*";
char* CascadeMenuFont = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*";
char* CtrlMenuFont = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*";
char* StartMenuFont = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*";
char* IconFont = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*";
char* DialogFont = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*";
/*
* Default start menu
*/
MenuElem StartMenuTemplate[] =
{{"Sair do Blanes 2000 ", "exit.xpm", Q_EXIT, "", -1, -1, NULL, NULL}};
/*
* Default control menu
*/
MenuElem CtrlMenuTemplate[] =
{{"Restaurar ", "", Q_RESTORE, "", -1, -1, &CtrlMenuTemplate[1], NULL},
{"Mover", "", Q_MOVE, "", -1, -1, &CtrlMenuTemplate[2], NULL},
{"Redimensionar", "", Q_RESIZE, "", -1, -1, &CtrlMenuTemplate[3], NULL},
{"Minimizar", "", Q_MINIMIZE, "", -1, -1, &CtrlMenuTemplate[4], NULL},
{"Maximizar", "", Q_MAXIMIZE, "", -1, -1, &CtrlMenuTemplate[5], NULL},
{"", "", Q_SEPARATOR, "", -1, -1, &CtrlMenuTemplate[6], NULL},
{"Fechar", "", Q_CLOSE, "", -1, -1, &CtrlMenuTemplate[7], NULL},
{"Matar", "", Q_KILL, "", -1, -1, NULL, NULL}};
MenuElem DesktopMenuTemplate[] =
{{"(None) ", "", Q_NONE, "", -1, -1, NULL, NULL}};
MenuElem IconMenuTemplate[] =
{{"Executar", "", Q_EXEC_ICON, "", -1, -1, &IconMenuTemplate[1], NULL},
{"Deletar", "", Q_DELETE_ICON, "", -1, -1, NULL, NULL}};
MenuElem TaskbarMenuTemplate[] =
{{"(None) ", "", Q_NONE, "", -1, -1, NULL, NULL}};
MenuElem ExitDlgTemplate[] =
{{"StaticText", "O que deseja fazer ?", Q_NONE, "", -1, -1,
&ExitDlgTemplate[1], NULL},
{"RadioButton", "Sair do Blanes 2000.", Q_EXIT, "", -1, -1,
&ExitDlgTemplate[2], NULL},
{"RadioButton", "Reiniciar o Blanes 2000.", Q_RESTART, "", -1, -1,
&ExitDlgTemplate[3], NULL},
{"IconPixmap", "exit2.xpm", Q_NONE, "", -1, -1,
&ExitDlgTemplate[4], NULL},
{"OKButton", "Sim", Q_NONE, "", -1, -1,
&ExitDlgTemplate[5], NULL},
{"CancelButton", "Nao", Q_NONE, "", -1, -1,
&ExitDlgTemplate[6], NULL},
{"HelpButton", "Ajuda", Q_NONE, "", -1, -1,
NULL, NULL}};
SCKeyEntry scMenuKey[] =
{{XK_Escape, 0, Q_POPDOWN_MENU},
{XK_Alt_L, 0, Q_POPDOWN_ALL_MENU},
{XK_Alt_R, 0, Q_POPDOWN_ALL_MENU},
{XK_Meta_L, 0, Q_POPDOWN_ALL_MENU},
{XK_Meta_R, 0, Q_POPDOWN_ALL_MENU},
{XK_Up, 0, Q_UP_FOCUS},
{XK_Down, 0, Q_DOWN_FOCUS},
{XK_Right, 0, Q_RIGHT_FOCUS},
{XK_Left, 0, Q_LEFT_FOCUS},
{XK_Return, 0, Q_ACTION}};
MenuElem* StartMenuItem = StartMenuTemplate;
MenuElem* CtrlMenuItem = CtrlMenuTemplate;
MenuElem* DesktopMenuItem = DesktopMenuTemplate;
MenuElem* IconMenuItem = IconMenuTemplate;
MenuElem* TaskbarMenuItem = TaskbarMenuTemplate;
MenuElem* ExitDlgItem = ExitDlgTemplate;
MenuElem* ShortCutItem = NULL;
SCKeyTable* scKey = NULL;
SCKeyTable* menuKey = NULL;
VariableTable varTable[] =
{{"DoubleClickTime", F_POSITIVE, &DoubleClickTime},
{"DoubleClickRange", F_POSITIVE, &DoubleClickRange},
{"TitlebarMotion", F_BOOL, &TitlebarMotion},
{"TitlebarMotionSpeed", F_POSITIVE, &TitlebarMotionSpeed},
{"MenuDelayTime", F_NATURAL, &MenuDelayTime},
{"MenuDelayTime2", F_NATURAL, &MenuDelayTime2},
{"PagingMovement", F_NATURAL, &PagingMovement},
{"TopLeftPage", F_OFFSET, &TopLeftPage},
{"PagingSize", F_SIZE, &PagingSize},
{"PagingSpeed", F_POSITIVE, &PagingSpeed},
{"PagerGeometry", F_GEOMETRY, &PagerGeometry},
{"EdgeResistance", F_NATURAL, &EdgeResistance},
{"SnappingMove", F_NATURAL, &SnappingMove},
{"SnappingEdges", F_NATURAL, &SnappingEdges},
{"NoResizeOverTaskbar", F_BOOL, &NoResizeOverTaskbar},
{"SmartPlacement", F_BOOL, &SmartPlacement},
{"UseTaskbar", F_BOOL, &UseTaskbar},
{"TaskbarPosition", F_TASKBAR, &TaskbarPosition},
{"TaskbarRows", F_POSITIVE, &TaskbarRows},
{"OnTopTaskbar", F_BOOL, &OnTopTaskbar},
{"AutoRaiseDelay", F_NATURAL, &AutoRaiseDelay},
{"WallPaper", F_STRING, &WallPaper},
{"LocaleName", F_STRING, &LocaleName},
{"UseBoldFont", F_BOOL, &UseBoldFont},
{"UseExitDialog", F_BOOL, &UseExitDialog},
{"UseConfirmDialog", F_BOOL, &UseConfirmDialog},
{"UsePager", F_BOOL, &UsePager},
{"OpaqueMove", F_BOOL, &OpaqueMove},
{"OpaqueResize", F_BOOL, &OpaqueResize},
{"FullOpaque", F_BOOL, &FullOpaque},
{"ClickToFocus", F_BOOL, &ClickToFocus},
{"FocusOnMap", F_BOOL, &FocusOnMap},
{"ClickingRaises", F_BOOL, &ClickingRaises},
{"NoDesktopFocus", F_BOOL, &NoDesktopFocus},
{"AutoRaise", F_BOOL, &AutoRaise},
{"UseClock", F_BOOL, &UseClock},
{"ClockLocaleName", F_STRING, &ClockLocaleName},
{"ImagePath", F_STRING, &ImagePath},
{"TaskbarAutoHide", F_BOOL, &TaskbarAutoHide},
{"RestoreMinimize", F_BOOL, &RestoreMinimize},
{"RestartOnFailure", F_BOOL, &RestartOnFailure},
{"GradMenuMap", F_BOOL, &GradMenuMap},
{"GradMenuMapSpeed", F_POSITIVE, &GradMenuMapSpeed},
{"GradTaskbarMotion", F_BOOL, &GradTaskbarMotion},
{"GradTaskbarMotionSpeed", F_POSITIVE, &GradTaskbarMotionSpeed},
{"GradTitlebar", F_BOOL, &GradTitlebar},
{"GradTitlebarColors", F_POSITIVE, &GradTitlebarColors},
{"OnTopPager", F_BOOL, &OnTopPager},
{"IconSize", F_POSITIVE, &IconSize},
{"FrameTitleHeight", F_POSITIVE, &FrameTitleHeight},
{"FrameBorderWidth", F_POSITIVE, &FrameBorderWidth},
{"TaskbarButtonHeight", F_POSITIVE, &TaskbarButtonHeight},
{"IndicatorSize", F_POSITIVE, &IndicatorSize},
{"IconVerticalSpacing", F_POSITIVE, &IconVerticalSpacing},
{"IconHorizontalSpacing", F_POSITIVE, &IconHorizontalSpacing},
{"ShiftMoveRatio", F_FLOATING, &ShiftMoveRatio},
{"CtrlMoveRatio", F_FLOATING, &CtrlMoveRatio},
{"HourGlassTime", F_NATURAL, &HourGlassTime},
{"UseInfoDisplay", F_BOOL, &UseInfoDisplay},
{"GradWindowMapStyle", F_GRADSTYLE, &GradWindowMapStyle},
{"GradWindowMapSpeed", F_POSITIVE, &GradWindowMapSpeed},
{"UseDebugger", F_BOOL, &UseDebugger},
{"TooltipDelayTime", F_NATURAL, &TooltipDelayTime},
{"TooltipMotionSpeed", F_POSITIVE, &TooltipMotionSpeed},
{"TooltipDisplayTime", F_NATURAL, &TooltipDisplayTime},
{"NoFocusChangeMask", F_MODMASK, &NoFocusChangeMask},
{"TaskbarShowDelay", F_NATURAL, &TaskbarShowDelay},
{"TaskbarHideDelay", F_NATURAL, &TaskbarHideDelay},
{"TaskbarButtonInScr", F_BOOL, &TaskbarButtonInScr},
{"AllowRemoteCmd", F_BOOL, &AllowRemoteCmd},
{"DisableDesktopChange", F_BOOL, &DisableDesktopChange},
{"StartButtonTitle", F_STRING, &StartButtonTitle},
{"StartButtonMessage", F_STRING, &StartButtonMessage},
{"MinimizeButtonMessage", F_STRING, &MinimizeButtonMessage},
{"MaximizeButtonMessage", F_STRING, &MaximizeButtonMessage},
{"CloseButtonMessage", F_STRING, &CloseButtonMessage},
{"RestoreButtonMessage", F_STRING, &RestoreButtonMessage},
{"ClockFormat", F_STRING, &ClockFormat},
{"ClockMessageFormat", F_STRING, &ClockMessageFormat},
{"TitlebarImage", F_STRING, &TitlebarImage},
{"TitlebarActiveImage", F_STRING, &TitlebarActiveImage},
{"FrameImage", F_STRING, &FrameImage},
{"FrameActiveImage", F_STRING, &FrameActiveImage},
{"TaskbarImage", F_STRING, &TaskbarImage},
{"MenuImage", F_STRING, &MenuImage},
{"MenuActiveImage", F_STRING, &MenuActiveImage},
{"PagerImage", F_STRING, &PagerImage},
{"DialogImage", F_STRING, &DialogImage},
{"SwitcherImage", F_STRING, &SwitcherImage},
{"StartMenuLogoImage", F_STRING, &StartMenuLogoImage},
{"DefaultIcon", F_STRING, &DefaultIcon},
{"DefaultLargeIcon", F_STRING, &DefaultLargeIcon},
{"DefaultShortcutIcon", F_STRING, &DefaultShortcutIcon},
{"TitlebarColor", F_COLOR, &TitlebarColor},
{"TitlebarColor2", F_COLOR, &TitlebarColor2},
{"TitlebarActiveColor", F_COLOR, &TitlebarActiveColor},
{"TitlebarActiveColor2", F_COLOR, &TitlebarActiveColor2},
{"TitleStringColor", F_COLOR, &TitleStringColor},
{"TitleStringActiveColor", F_COLOR, &TitleStringActiveColor},
{"IconForeColor", F_COLOR, &IconForeColor},
{"IconBackColor", F_COLOR, &IconBackColor},
{"IconStringColor", F_COLOR, &IconStringColor},
{"IconStringActiveColor", F_COLOR, &IconStringActiveColor},
{"FrameColor", F_COLOR, &FrameColor},
{"FrameActiveColor", F_COLOR, &FrameActiveColor},
{"PagerColor", F_COLOR, &PagerColor},
{"PagerActiveColor", F_COLOR, &PagerActiveColor},
{"MiniatureColor", F_COLOR, &MiniatureColor},
{"MiniatureActiveColor", F_COLOR, &MiniatureActiveColor},
{"MenuColor", F_COLOR, &MenuColor},
{"MenuActiveColor", F_COLOR, &MenuActiveColor},
{"MenuStringColor", F_COLOR, &MenuStringColor},
{"MenuStringActiveColor", F_COLOR, &MenuStringActiveColor},
{"SwitcherColor", F_COLOR, &SwitcherColor},
{"SwitcherActiveColor", F_COLOR, &SwitcherActiveColor},
{"SwitcherStringColor", F_COLOR, &SwitcherStringColor},
{"DialogColor", F_COLOR, &DialogColor},
{"DialogStringColor", F_COLOR, &DialogStringColor},
{"ButtonColor", F_COLOR, &ButtonColor},
{"ButtonActiveColor", F_COLOR, &ButtonActiveColor},
{"ButtonStringColor", F_COLOR, &ButtonStringColor},
{"ButtonStringActiveColor", F_COLOR, &ButtonStringActiveColor},
{"TaskbarColor", F_COLOR, &TaskbarColor},
{"ClockStringColor", F_COLOR, &ClockStringColor},
{"DesktopColor", F_COLOR, &DesktopColor},
{"DesktopActiveColor", F_COLOR, &DesktopActiveColor},
{"StartMenuLogoColor", F_COLOR, &StartMenuLogoColor},
{"CursorColor", F_COLOR, &CursorColor},
{"TooltipColor", F_COLOR, &TooltipColor},
{"TooltipStringColor", F_COLOR, &TooltipStringColor},
{"DefaultFont", F_STRING, &DefaultFont},
{"TitleFont", F_STRING, &TitleFont},
{"TaskbarFont", F_STRING, &TaskbarFont},
{"TaskbarBoldFont", F_STRING, &TaskbarBoldFont},
{"CascadeMenuFont", F_STRING, &CascadeMenuFont},
{"CtrlMenuFont", F_STRING, &CtrlMenuFont},
{"StartMenuFont", F_STRING, &StartMenuFont},
{"IconFont", F_STRING, &IconFont},
{"DialogFont", F_STRING, &DialogFont}
};
/*
* Table for fontset variable and font name.
*/
FsNameSet fsSet[] =
{{&fsTitle, &TitleFont},
{&fsTaskbar, &TaskbarFont},
{&fsCascadeMenu, &CascadeMenuFont},
{&fsCtrlMenu, &CtrlMenuFont},
{&fsStartMenu, &StartMenuFont},
{&fsIcon, &IconFont},
{&fsDialog, &DialogFont},
{&fsBoldTaskbar, &TaskbarBoldFont}}; // bold font must be the last entry
AttrNameSet attrSet[] =
{{"STICKY", STICKY, True},
{"NO_FOCUS", NO_FOCUS, True},
{"NO_TITLE", TITLE, False},
{"NO_BORDER", BORDER | BORDER_EDGE, False},
{"NO_BORDER_EDGE", BORDER_EDGE, False},
{"NO_TBUTTON", NO_TBUTTON, True},
{"NO_CTRLBTN", CTRL_MENU, False},
{"NO_BUTTON1", BUTTON1, False},
{"NO_BUTTON2", BUTTON2, False},
{"NO_BUTTON3", BUTTON3, False},
{"SMALL_IMG", SMALL_IMG, True},
{"LARGE_IMG", LARGE_IMG, True},
{"CLOSE_SOON", CLOSE_SOON, True},
{"ONTOP", ONTOP, True},
{"INIT_MAXIMIZE", INIT_MAXIMIZE, True},
{"INIT_MINIMIZE", INIT_MINIMIZE, True},
{"FOCUS_ON_CLICK", FOCUS_ON_CLICK, True},
{"GEOMETRY", GEOMETRY, True}
};
KeyMod keyMod[] =
{{"Shift", ShiftMask},
{"Ctrl", ControlMask},
{"Alt", Mod1Mask}, // Mod1Mask is default
{"Meta", Mod1Mask}, // Mod1Mask is default
{"Mod1", Mod1Mask},
{"Mod2", Mod2Mask},
{"Mod3", Mod3Mask},
{"Mod4", Mod4Mask},
{"Mod5", Mod5Mask},
{"None", 0}};
const int VarTableSize = sizeof(varTable) / sizeof(VariableTable);
const int FsNum = sizeof(fsSet) / sizeof(FsNameSet);
const int AttrNum = sizeof(attrSet) / sizeof(AttrNameSet);
const int KeyModNum = sizeof(keyMod) / sizeof(KeyMod);
const int MenuKeyNum = sizeof(scMenuKey) / sizeof(SCKeyEntry);
syntax highlighted by Code2HTML, v. 0.9.1