]> Dogcows Code - chaz/openbox/commitdiff
moved menu from a rc file option to a command line option
authorDana Jansens <danakj@orodu.net>
Wed, 15 May 2002 22:23:35 +0000 (22:23 +0000)
committerDana Jansens <danakj@orodu.net>
Wed, 15 May 2002 22:23:35 +0000 (22:23 +0000)
20 files changed:
CHANGELOG
nls/C/main.m
nls/da_DK/main.m
nls/de_DE/main.m
nls/es_ES/main.m
nls/et_EE/main.m
nls/fr_FR/main.m
nls/it_IT/main.m
nls/ja_JP/main.m
nls/nl_NL/main.m
nls/pt_BR/main.m
nls/ru_RU/main.m
nls/sl_SI/main.m
nls/sv_SE/main.m
nls/tr_TR/main.m
nls/zh_CN/main.m
src/Screen.cc
src/main.cc
src/openbox.cc
src/openbox.h

index d3513c79952ac3b644b3df6bc4a19182375252b4..a192aca46b88934c210f756414ccca327f263257 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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)
 
index e7d9f157bd2cf844b196e3169806ec53f65ee898..9174d9da328e65ee6ff81c1adab7e04158c76a83 100644 (file)
@@ -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
index 84926a6d38f73edf75f53b1d419b623995454c41..3fe77d46ef46404aca39e8401173dc611800802d 100644 (file)
@@ -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
index d20d1fdeae5174c7421dacbf3d89dd1ac74e3e61..c8c13fe00eea4f8767f22d09fcfb7b28181a7470 100644 (file)
@@ -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
index d80cf938fbe9709aba8be4f78cdd077ea713841a..5640740e91c5546ee6ae11b38d47803a28221d72 100644 (file)
@@ -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
index 984b556571b47fee4def2610a2c7ad5f09f65c86..3a3d0d997126380fbbe4c2ad6541e9c5bc84941b 100644 (file)
@@ -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
index 5963b7c8e4f60ae3dd08891d2a35eef2d4d3aa82..da0a96a2642ad0b2990605c765bf70c04cff3bd6 100644 (file)
@@ -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
index 0d8507de86a5aecf3c84c036e7c8735e935c583d..386c5da1e82e625c5522275e01d61bae52b44929 100644 (file)
@@ -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
index 5aa8b23d8d729d2f540036aa535959fc6596ed51..831ab0768292ab551db7f8569814a267fb05abf1 100644 (file)
@@ -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
index 8cab538162340054e81f68e19dc9ca68bcc3c64b..8b5bc568c4373539620f1ce57cedcd6c08c710c8 100644 (file)
@@ -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
index a01d01aa1726c73b5d32e0e45c08b05c646bda99..9aa8898b3708b7e77c26c08b74d791ca4048c820 100644 (file)
@@ -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
index a91c112e90a142b83f7023a7481dddd95ee8959d..b531fc346740d8ffb8ff2ac08ffb74ef657a939e 100644 (file)
@@ -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
index c6d04725cf25479aa60070cb7ea973c4e7ef81eb..273bcefa3db77be0b9649979a859dca705078e56 100644 (file)
@@ -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
index 6cfcfb5f0733a66f7af31e0638d74effae5d9687..f229c5259277df004948e922f77d761a086b677a 100644 (file)
@@ -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
index d8f40ae2ac4c20840397dcf586683245baa16042..0c582a978485bda852fe7fff49c0ac6821a324e0 100644 (file)
@@ -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
index 15a4b9e7d82c19fd65df906abbe4af00da463db1..890338bcda80b6d5284b38434514906b998cb53f 100644 (file)
@@ -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
index bc1b9e65bfeca7e5f514a65c31088fa2833eacec..7338f118ad292948d8cafa5302ef9624e595ef3f 100644 (file)
@@ -2265,59 +2265,72 @@ 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());
+  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 {
-      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]);
-           }
+      // 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 (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';
+            if (index == -1) index = 0;
+            label[index] = '\0';
 
-             rootmenu->setLabel(label);
-             defaultMenu = parseMenuFile(menu_file, rootmenu);
-             break;
-           }
-         }
-       }
+            rootmenu->setLabel(label);
+            defaultMenu = parseMenuFile(menu_file, rootmenu);
+            if (!defaultMenu)
+              openbox.addMenuTimestamp(menu_filename);
+            break;
+          }
+        }
       }
-      fclose(menu_file);
     }
+    fclose(menu_file);
   }
 
   if (defaultMenu) {
@@ -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,
index 0b2360ab6d5488d91fd818bd9e7ab334050596df..84e0d90e6616ce29e6e6830d23fb6e80db97d9e2 100644 (file)
@@ -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);
index 3a7fb6b985014e9f611ba9ae7971317a7252be09..4b5495bb58e87d3f0b1f2f82c6f6d02fa980122d 100644 (file)
@@ -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();
index 61d5fdb2a5a9d925974c3544ca66907b9a8a9794..a98b2f14b7ce8026207f06dd5a0f328518826e5d 100644 (file)
@@ -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 *);
This page took 0.052683 seconds and 4 git commands to generate.