moved menu from a rc file option to a command line option
This commit is contained in:
parent
4f50d11704
commit
a3a23c28f0
20 changed files with 189 additions and 114 deletions
|
@ -1,6 +1,14 @@
|
|||
Changelog for Openbox:
|
||||
|
||||
1.2.0:
|
||||
* changed the menu from an rcfile option to a command-
|
||||
line option. use 'openbox -menu <file>' to select an
|
||||
alternate menu. The default menu used is
|
||||
~/.openbox/menu. If the default, or the file you
|
||||
specify does not exist, the global menu is tried.
|
||||
And if the global menu also does not exist, a
|
||||
simple, internal menu is used instead. (Ben Jansens)
|
||||
|
||||
* new version of bsetroot ported from blackbox cvs
|
||||
with intent to support Eterm/Esetroot. (Sean Perry)
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# error: '-rc' requires an argument\n
|
||||
$ #MENURequiresArg
|
||||
# error: '-menu' requires an argument\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# error: '-display' requires an argument\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\tuse display connection.\n\
|
||||
-rc <string>\t\t\tuse alternate resource file.\n\
|
||||
-menu <string>\t\t\tuse alternate menu file.\n\
|
||||
-version\t\t\tdisplay version and exit.\n\
|
||||
-help\t\t\t\tdisplay this help text and exit.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# fejl: '-rc' kræver et argument\n
|
||||
$ #MENURequiresArg
|
||||
# fejl: '-menu' kræver et argument\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# fjel: '-display' kræver et argument\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\tbrug skærm tilslutning.\n\
|
||||
-rc <string>\t\t\tbrug alternativ resource fil.\n\
|
||||
-menu <string>\t\t\tbrug alternativ menu fil.\n\
|
||||
-version\t\t\tvis versionsnummer og afslut.\n\
|
||||
-help\t\t\t\tvis denne hjælp og afslut.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# Fehler: '-rc' benötigt einen Parameter\n
|
||||
$ #MENURequiresArg
|
||||
# Fehler: '-menu' benötigt einen Parameter\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# Fehler: '-display' benötigt einen Parameter\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\tDisplay Verbindung.\n\
|
||||
-rc <string>\t\t\talternative Konfigurationsdatei.\n\
|
||||
-menu <string>\t\t\talternative menu.\n\
|
||||
-version\t\t\tzeige Versionsnummer und Beendung.\n\
|
||||
-help\t\t\t\tzeige diesen Hilfstext und Beendung.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# error: '-rc' requiere un argumento
|
||||
$ #MENURequiresArg
|
||||
# error: '-menu' requiere un argumento
|
||||
$ #DISPLAYRequiresArg
|
||||
# error: '-display' requiere un argumento
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string> conexión de despliegue.\n\
|
||||
-rc <string> archivo alternativo de recuros.\n\
|
||||
-menu <string> archivo alternativo de menu.\n\
|
||||
-version mostrar la versión y cerrar.\n\
|
||||
-help mostrar este texto de ayuda y cerrar.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# viga: '-rc' vajab argumenti\n
|
||||
$ #MENURequiresArg
|
||||
# viga: '-menu' vajab argumenti\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# viga: '-display' vajab argumenti\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\tkasuta displei ühendust.\n\
|
||||
-rc <string>\t\t\tkasuta alternatiivseid resursse.\n\
|
||||
-menu <string>\t\t\tkasuta alternatiivseid menu.\n\
|
||||
-version\t\t\tnäita versiooninumber ja välju.\n\
|
||||
-help\t\t\t\tnäita seda abiteksti ja välju.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# Erreur: '-rc' nécessite un argument\n
|
||||
$ #MENURequiresArg
|
||||
# Erreur: '-menu' nécessite un argument\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# Erreur: '-display' nécessite un argument\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <chaîne>\t\tutilise la connexion à l'affichage.\n\
|
||||
-rc <chaîne>\t\t\tutilise un autre fichier de configuration.\n\
|
||||
-menu <chaîne>\t\t\tutilise un autre fichier de menu.\n\
|
||||
-version\t\t\taffiche la version et quitte.\n\
|
||||
-help\t\t\t\taffiche ce texte d'aide et quitte.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# errore: '-rc' richiede un argomento\n
|
||||
$ #MENURequiresArg
|
||||
# errore: '-menu' richiede un argomento\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# errore: '-display' richiede an argomento\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\tusa connessione display.\n\
|
||||
-rc <string>\t\t\tusa un file risorsa alternativo.\n\
|
||||
-menu <string>\t\t\tusa un file menu alternativo.\n\
|
||||
-version\t\t\tmostra la versione e esci.\n\
|
||||
-help\t\t\t\tmostra questo aiuto e esci.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# エラー: '-rc' オプションは引数を必要とします\n
|
||||
$ #MENURequiresArg
|
||||
# エラー: '-menu' オプションは引数を必要とします\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# エラー: '-display' オプションは引数を必要とします\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\t指定ディスプレイに接続\n\
|
||||
-rc <string>\t\t\t代りのリソースファイルを使用\n\
|
||||
-menu <string>\t\t\tuse alternate menu file\n\
|
||||
-version\t\t\tバージョン情報を表示し、終了\n\
|
||||
-help\t\t\t\tこのヘルプを表示し、終了\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# fout: '-rc' heeft een argument nodig (bestandsnaam)\n
|
||||
$ #MENURequiresArg
|
||||
# fout: '-menu' heeft een argument nodig (bestandsnaam)\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# fout: '-display' heeft een argument nodig (displaynaam)\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <displaynaam> gebruik aangegeven display.\n\
|
||||
-rc <bestandsnaam> gebruik alternatief resource bestand.\n\
|
||||
-menu <bestandsnaam> gebruik alternatief menu bestand.\n\
|
||||
-version toon versie en stop.\n\
|
||||
-help toon deze hulp tekst en stop.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# erro: '-rc' requer um argumento\n
|
||||
$ #MENURequiresArg
|
||||
# erro: '-menu' requer um argumento\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# erro: '-display' requer um argumento\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\tusar conexão com o display.\n\
|
||||
-rc <string>\t\t\tusar arquivo alternativo de recursos.\n\
|
||||
-menu <string>\t\t\tusar arquivo alternativo de menu.\n\
|
||||
-version\t\t\tmostrar versao e sair.\n\
|
||||
-help\t\t\t\tmostrar esta ajuda e sair.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# ошибка: '-rc' требует наличие аргумента\n
|
||||
$ #MENURequiresArg
|
||||
# ÏÛÉÂËÁ: '-menu' ÔÒÅÂÕÅÔ ÎÁÌÉÞÉÅ ÁÒÇÕÍÅÎÔÁ\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# ошибка: '-display' требует наличие аргумента\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\tиспользовать заданный дисплей.\n\
|
||||
-rc <string>\t\t\tиспользовать альтернативный файл ресурсов.\n\
|
||||
-menu <string>\t\t\tuse alternate menu file.\n\
|
||||
-version\t\t\tвывести номер версии и выйти.\n\
|
||||
-help\t\t\t\tвывести эту подсказку и выйти.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# napaka: '-rc' zahteva argument\n
|
||||
$ #MENURequiresArg
|
||||
# napaka: '-menu' zahteva argument\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# napaka: '-display' zahteva argument\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\tuporabi prikazovalnik.\n\
|
||||
-rc <string>\t\t\tuporabi nadomestno datoteko z viri.\n\
|
||||
-menu <string>\t\t\tuse alternate menu file.\n\
|
||||
-version\t\t\tprika¾i oznako razlièice in konèaj.\n\
|
||||
-help\t\t\t\prika¾i ta navodila in konèaj.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# fel: '-rc' kräver ett argument\n
|
||||
$ #MENURequiresArg
|
||||
# fel: '-menu' kräver ett argument\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# fel: '-display' kräver ett argument\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\tanvänd skärmanslutning.\n\
|
||||
-rc <string>\t\t\tanvänd alternativ resursfil.\n\
|
||||
-menu <string>\t\t\tanvänd alternativ menu.\n\
|
||||
-version\t\t\tvisa version och avsluta.\n\
|
||||
-help\t\t\t\tvisa denna hjälptext och avsluta.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# hata : '-rc' bir argüman bekler\n
|
||||
$ #MENURequiresArg
|
||||
# hata : '-menu' bir argüman bekler\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# hata : '-display' bir argüman bekler\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <metin>\t\tekranı kullan.\n\
|
||||
-rc <metin>\t\t\tbaşka bir ayarlama dosyasını kullan.\n\
|
||||
-menu <metin>\t\t\tuse alternate menu file.\n\
|
||||
-version\t\t\tnesil bilgisini gösterir ve çıkar.\n\
|
||||
-help\t\t\t\tbu yardım iletisini gösterir ve çıkar.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
|
@ -2,6 +2,8 @@ $set 14 #main
|
|||
|
||||
$ #RCRequiresArg
|
||||
# 错误: '-rc' 需要参数\n
|
||||
$ #MENURequiresArg
|
||||
# 错误: '-menu' 需要参数\n
|
||||
$ #DISPLAYRequiresArg
|
||||
# 错误: '-display' 需要参数\n
|
||||
$ #WarnDisplaySet
|
||||
|
@ -12,6 +14,7 @@ $ #Usage
|
|||
\t\t\t 1997 - 2000 Brad Hughes\n\n\
|
||||
-display <string>\t\t使用显示连接.\n\
|
||||
-rc <string>\t\t\t使用其他的资源文件.\n\
|
||||
-menu <string>\t\t\tuse alternate menu file.\n\
|
||||
-version\t\t\t显示版本.\n\
|
||||
-help\t\t\t\t显示这个帮助.\n\n
|
||||
$ #CompileOptions
|
||||
|
|
125
src/Screen.cc
125
src/Screen.cc
|
@ -2265,60 +2265,73 @@ void BScreen::InitMenu(void) {
|
|||
} else {
|
||||
rootmenu = new Rootmenu(*this);
|
||||
}
|
||||
Bool defaultMenu = True;
|
||||
bool defaultMenu = true;
|
||||
|
||||
if (openbox.getMenuFilename()) {
|
||||
FILE *menu_file = fopen(openbox.getMenuFilename(), "r");
|
||||
FILE *menu_file;
|
||||
const char *menu_filename = openbox.getMenuFilename();
|
||||
|
||||
if (!menu_file) {
|
||||
perror(openbox.getMenuFilename());
|
||||
} else {
|
||||
if (feof(menu_file)) {
|
||||
fprintf(stderr, i18n->getMessage(ScreenSet, ScreenEmptyMenuFile,
|
||||
"%s: Empty menu file"),
|
||||
openbox.getMenuFilename());
|
||||
} else {
|
||||
char line[1024], label[1024];
|
||||
memset(line, 0, 1024);
|
||||
memset(label, 0, 1024);
|
||||
|
||||
while (fgets(line, 1024, menu_file) && ! feof(menu_file)) {
|
||||
if (line[0] != '#') {
|
||||
int i, key = 0, index = -1, len = strlen(line);
|
||||
|
||||
key = 0;
|
||||
for (i = 0; i < len; i++) {
|
||||
if (line[i] == '[') index = 0;
|
||||
else if (line[i] == ']') break;
|
||||
else if (line[i] != ' ')
|
||||
if (index++ >= 0)
|
||||
key += tolower(line[i]);
|
||||
}
|
||||
|
||||
if (key == 517) {
|
||||
index = -1;
|
||||
for (i = index; i < len; i++) {
|
||||
if (line[i] == '(') index = 0;
|
||||
else if (line[i] == ')') break;
|
||||
else if (index++ >= 0) {
|
||||
if (line[i] == '\\' && i < len - 1) i++;
|
||||
label[index - 1] = line[i];
|
||||
}
|
||||
}
|
||||
|
||||
if (index == -1) index = 0;
|
||||
label[index] = '\0';
|
||||
|
||||
rootmenu->setLabel(label);
|
||||
defaultMenu = parseMenuFile(menu_file, rootmenu);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(menu_file);
|
||||
if (!(menu_file = fopen(menu_filename, "r"))) {
|
||||
perror(menu_filename);
|
||||
menu_filename = (char *) 0;
|
||||
}
|
||||
if (menu_filename == (char *) 0) {
|
||||
// opening the menu file failed, try the DEFAULTMENU
|
||||
menu_filename = DEFAULTMENU;
|
||||
if (!(menu_file = fopen(menu_filename, "r"))) {
|
||||
perror(menu_filename);
|
||||
menu_filename = (char *) 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (menu_filename) {
|
||||
if (feof(menu_file)) {
|
||||
fprintf(stderr, i18n->getMessage(ScreenSet, ScreenEmptyMenuFile,
|
||||
"%s: Empty menu file"), menu_filename);
|
||||
menu_filename = (char *) 0;
|
||||
} else {
|
||||
// successsfully opened a menu file
|
||||
char line[1024], label[1024];
|
||||
memset(line, 0, 1024);
|
||||
memset(label, 0, 1024);
|
||||
|
||||
while (fgets(line, 1024, menu_file) && ! feof(menu_file)) {
|
||||
if (line[0] != '#') {
|
||||
int i, key = 0, index = -1, len = strlen(line);
|
||||
|
||||
key = 0;
|
||||
for (i = 0; i < len; i++) {
|
||||
if (line[i] == '[') index = 0;
|
||||
else if (line[i] == ']') break;
|
||||
else if (line[i] != ' ')
|
||||
if (index++ >= 0)
|
||||
key += tolower(line[i]);
|
||||
}
|
||||
|
||||
if (key == 517) {
|
||||
index = -1;
|
||||
for (i = index; i < len; i++) {
|
||||
if (line[i] == '(') index = 0;
|
||||
else if (line[i] == ')') break;
|
||||
else if (index++ >= 0) {
|
||||
if (line[i] == '\\' && i < len - 1) i++;
|
||||
label[index - 1] = line[i];
|
||||
}
|
||||
}
|
||||
|
||||
if (index == -1) index = 0;
|
||||
label[index] = '\0';
|
||||
|
||||
rootmenu->setLabel(label);
|
||||
defaultMenu = parseMenuFile(menu_file, rootmenu);
|
||||
if (!defaultMenu)
|
||||
openbox.addMenuTimestamp(menu_filename);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(menu_file);
|
||||
}
|
||||
|
||||
if (defaultMenu) {
|
||||
rootmenu->setInternalMenu();
|
||||
|
@ -2329,8 +2342,6 @@ void BScreen::InitMenu(void) {
|
|||
BScreen::Restart);
|
||||
rootmenu->insert(i18n->getMessage(ScreenSet, ScreenExit, "Exit"),
|
||||
BScreen::Exit);
|
||||
} else {
|
||||
openbox.setMenuFilename(openbox.getMenuFilename());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2530,10 +2541,9 @@ Bool BScreen::parseMenuFile(FILE *file, Rootmenu *menu) {
|
|||
}
|
||||
|
||||
if (! feof(submenufile)) {
|
||||
if (! parseMenuFile(submenufile, menu))
|
||||
openbox.setMenuFilename(newfile);
|
||||
|
||||
fclose(submenufile);
|
||||
if (!parseMenuFile(submenufile, menu))
|
||||
openbox.addMenuTimestamp(newfile);
|
||||
fclose(submenufile);
|
||||
}
|
||||
} else
|
||||
perror(newfile);
|
||||
|
@ -2689,8 +2699,7 @@ Bool BScreen::parseMenuFile(FILE *file, Rootmenu *menu) {
|
|||
menu->insert(label, stylesmenu);
|
||||
rootmenuList.push_back(stylesmenu);
|
||||
}
|
||||
|
||||
openbox.setMenuFilename(stylesdir);
|
||||
openbox.addMenuTimestamp(stylesdir);
|
||||
} else {
|
||||
fprintf(stderr, i18n->getMessage(ScreenSet,
|
||||
ScreenSTYLESDIRErrorNotDir,
|
||||
|
|
20
src/main.cc
20
src/main.cc
|
@ -68,6 +68,7 @@ static void showHelp(int exitval) {
|
|||
"\t\t\t 1997 - 2000 Brad Hughes\n\n"
|
||||
" -display <string>\t\tuse display connection.\n"
|
||||
" -rc <string>\t\t\tuse alternate resource file.\n"
|
||||
" -menu <string>\t\t\tuse alternate menu file.\n"
|
||||
" -version\t\t\tdisplay version and exit.\n"
|
||||
" -help\t\t\t\tdisplay this help text and exit.\n\n"),
|
||||
__openbox_version);
|
||||
|
@ -125,6 +126,7 @@ static void showHelp(int exitval) {
|
|||
int main(int argc, char **argv) {
|
||||
char *session_display = (char *) 0;
|
||||
char *rc_file = (char *) 0;
|
||||
char *menu_file = (char *) 0;
|
||||
|
||||
NLSInit("openbox.cat");
|
||||
|
||||
|
@ -134,13 +136,25 @@ int main(int argc, char **argv) {
|
|||
|
||||
if ((++i) >= argc) {
|
||||
fprintf(stderr,
|
||||
i18n->getMessage(mainSet, mainRCRequiresArg,
|
||||
"error: '-rc' requires and argument\n"));
|
||||
i18n->getMessage(mainSet, mainRCRequiresArg,
|
||||
"error: '-rc' requires and argument\n"));
|
||||
|
||||
::exit(1);
|
||||
}
|
||||
|
||||
rc_file = argv[i];
|
||||
} else if (! strcmp(argv[i], "-menu")) {
|
||||
// look for alternative menu file to use
|
||||
|
||||
if ((++i) >= argc) {
|
||||
fprintf(stderr,
|
||||
i18n->getMessage(mainSet, mainMENURequiresArg,
|
||||
"error: '-menu' requires and argument\n"));
|
||||
|
||||
::exit(1);
|
||||
}
|
||||
|
||||
menu_file = argv[i];
|
||||
} else if (! strcmp(argv[i], "-display")) {
|
||||
// check for -display option... to run on a display other than the one
|
||||
// set by the environment variable DISPLAY
|
||||
|
@ -182,7 +196,7 @@ int main(int argc, char **argv) {
|
|||
_chdir2(getenv("X11ROOT"));
|
||||
#endif // __EMX__
|
||||
|
||||
Openbox openbox(argc, argv, session_display, rc_file);
|
||||
Openbox openbox(argc, argv, session_display, rc_file, menu_file);
|
||||
openbox.eventLoop();
|
||||
|
||||
return(0);
|
||||
|
|
|
@ -151,8 +151,8 @@ static Bool queueScanner(Display *, XEvent *e, char *args) {
|
|||
Openbox *openbox;
|
||||
|
||||
|
||||
Openbox::Openbox(int m_argc, char **m_argv, char *dpy_name, char *rc)
|
||||
: BaseDisplay(m_argv[0], dpy_name) {
|
||||
Openbox::Openbox(int m_argc, char **m_argv, char *dpy_name, char *rc,
|
||||
char *menu) : BaseDisplay(m_argv[0], dpy_name) {
|
||||
grab();
|
||||
|
||||
if (! XSupportsLocale())
|
||||
|
@ -164,25 +164,35 @@ Openbox::Openbox(int m_argc, char **m_argv, char *dpy_name, char *rc)
|
|||
::openbox = this;
|
||||
argc = m_argc;
|
||||
argv = m_argv;
|
||||
if (rc == NULL) {
|
||||
if (rc == NULL || menu == NULL) {
|
||||
char *homedir = getenv("HOME");
|
||||
|
||||
rc_file = new char[strlen(homedir) + strlen("/.openbox/rc") + 1];
|
||||
sprintf(rc_file, "%s/.openbox", homedir);
|
||||
|
||||
char *configdir = new char[strlen(homedir) + strlen("/.openbox") + 1];
|
||||
sprintf(configdir, "%s/.openbox", homedir);
|
||||
// try to make sure the ~/.openbox directory exists
|
||||
mkdir(rc_file, S_IREAD | S_IWRITE | S_IEXEC | S_IRGRP | S_IWGRP | S_IXGRP |
|
||||
mkdir(configdir, S_IREAD | S_IWRITE | S_IEXEC |
|
||||
S_IRGRP | S_IWGRP | S_IXGRP |
|
||||
S_IROTH | S_IWOTH | S_IXOTH);
|
||||
|
||||
sprintf(rc_file, "%s/.openbox/rc", homedir);
|
||||
} else {
|
||||
rc_file = bstrdup(rc);
|
||||
|
||||
if (rc == NULL) {
|
||||
rc_file = new char[strlen(configdir) + strlen("/rc") + 1];
|
||||
sprintf(rc_file, "%s/rc", configdir);
|
||||
} else
|
||||
rc_file = bstrdup(rc);
|
||||
|
||||
if (menu == NULL) {
|
||||
menu_file = new char[strlen(configdir) + strlen("/menu") + 1];
|
||||
sprintf(menu_file, "%s/menu", configdir);
|
||||
} else
|
||||
menu_file = bstrdup(menu);
|
||||
|
||||
delete [] configdir;
|
||||
}
|
||||
config.setFile(rc_file);
|
||||
|
||||
|
||||
no_focus = False;
|
||||
|
||||
resource.menu_file = resource.style_file = NULL;
|
||||
resource.style_file = NULL;
|
||||
resource.titlebar_layout = NULL;
|
||||
resource.auto_raise_delay.tv_sec = resource.auto_raise_delay.tv_usec = 0;
|
||||
|
||||
|
@ -240,9 +250,6 @@ Openbox::~Openbox() {
|
|||
for_each(menuTimestamps.begin(), menuTimestamps.end(),
|
||||
PointerAssassin());
|
||||
|
||||
if (resource.menu_file)
|
||||
delete [] resource.menu_file;
|
||||
|
||||
if (resource.style_file)
|
||||
delete [] resource.style_file;
|
||||
|
||||
|
@ -252,6 +259,7 @@ Openbox::~Openbox() {
|
|||
delete timer;
|
||||
|
||||
delete [] rc_file;
|
||||
delete [] menu_file;
|
||||
}
|
||||
|
||||
|
||||
|
@ -883,7 +891,6 @@ void Openbox::save() {
|
|||
// save all values as they are so that the defaults will be written to the rc
|
||||
// file
|
||||
|
||||
config.setValue("session.menuFile", getMenuFilename());
|
||||
config.setValue("session.colorsPerChannel",
|
||||
resource.colors_per_channel);
|
||||
config.setValue("session.styleFile", resource.style_file);
|
||||
|
@ -910,13 +917,6 @@ void Openbox::load() {
|
|||
std::string s;
|
||||
long l;
|
||||
|
||||
if (resource.menu_file)
|
||||
delete [] resource.menu_file;
|
||||
if (config.getValue("session.menuFile", "Session.MenuFile", s))
|
||||
resource.menu_file = bstrdup(s.c_str());
|
||||
else
|
||||
resource.menu_file = bstrdup(DEFAULTMENU);
|
||||
|
||||
if (config.getValue("session.colorsPerChannel", "Session.ColorsPerChannel",
|
||||
l))
|
||||
resource.colors_per_channel = (l < 2 ? 2 : (l > 6 ? 6 : l)); // >= 2, <= 6
|
||||
|
@ -1001,6 +1001,29 @@ void Openbox::checkMenu() {
|
|||
}
|
||||
|
||||
|
||||
void Openbox::addMenuTimestamp(const char *filename) {
|
||||
bool found = false;
|
||||
|
||||
MenuTimestampList::iterator it;
|
||||
for (it = menuTimestamps.begin(); it != menuTimestamps.end(); ++it)
|
||||
if (! strcmp((*it)->filename, filename)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
if (!found) {
|
||||
struct stat buf;
|
||||
|
||||
if (! stat(filename, &buf)) {
|
||||
MenuTimestamp *ts = new MenuTimestamp;
|
||||
|
||||
ts->filename = bstrdup(filename);
|
||||
ts->timestamp = buf.st_ctime;
|
||||
|
||||
menuTimestamps.push_back(ts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Openbox::rereadMenu() {
|
||||
reread_menu_wait = True;
|
||||
|
||||
|
@ -1027,30 +1050,6 @@ void Openbox::setStyleFilename(const char *filename) {
|
|||
}
|
||||
|
||||
|
||||
void Openbox::setMenuFilename(const char *filename) {
|
||||
bool found = false;
|
||||
|
||||
MenuTimestampList::iterator it;
|
||||
for (it = menuTimestamps.begin(); it != menuTimestamps.end(); ++it)
|
||||
if (! strcmp((*it)->filename, filename)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
if (!found) {
|
||||
struct stat buf;
|
||||
|
||||
if (! stat(filename, &buf)) {
|
||||
MenuTimestamp *ts = new MenuTimestamp;
|
||||
|
||||
ts->filename = bstrdup(filename);
|
||||
ts->timestamp = buf.st_ctime;
|
||||
|
||||
menuTimestamps.push_back(ts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Openbox::timeout() {
|
||||
if (reconfigure_wait)
|
||||
real_reconfigure();
|
||||
|
|
|
@ -87,7 +87,7 @@ private:
|
|||
struct resource {
|
||||
Time double_click_interval;
|
||||
|
||||
char *menu_file, *style_file;
|
||||
char *style_file;
|
||||
char *titlebar_layout;
|
||||
int colors_per_channel;
|
||||
timeval auto_raise_delay;
|
||||
|
@ -129,7 +129,7 @@ private:
|
|||
Bool no_focus, reconfigure_wait, reread_menu_wait;
|
||||
Time last_time;
|
||||
Window masked;
|
||||
char *rc_file, **argv;
|
||||
char *menu_file, *rc_file, **argv;
|
||||
int argc;
|
||||
Resource config;
|
||||
|
||||
|
@ -144,7 +144,7 @@ protected:
|
|||
|
||||
|
||||
public:
|
||||
Openbox(int, char **, char * = 0, char * = 0);
|
||||
Openbox(int, char **, char * = 0, char * = 0, char * = 0);
|
||||
virtual ~Openbox();
|
||||
|
||||
#ifdef HAVE_GETPID
|
||||
|
@ -173,7 +173,8 @@ public:
|
|||
inline const char *getStyleFilename() const
|
||||
{ return resource.style_file; }
|
||||
inline const char *getMenuFilename() const
|
||||
{ return resource.menu_file; }
|
||||
{ return menu_file; }
|
||||
void addMenuTimestamp(const char *filename);
|
||||
|
||||
inline const int &getColorsPerChannel() const
|
||||
{ return resource.colors_per_channel; }
|
||||
|
@ -197,7 +198,6 @@ public:
|
|||
|
||||
void shutdown();
|
||||
void setStyleFilename(const char *);
|
||||
void setMenuFilename(const char *);
|
||||
void saveMenuSearch(Window, Basemenu *);
|
||||
void saveWindowSearch(Window, OpenboxWindow *);
|
||||
void saveToolbarSearch(Window, Toolbar *);
|
||||
|
|
Loading…
Reference in a new issue