}
 
 void
-EditEnginePopUp (char *tags, char **dest)
+EditAnyPopUp (char *tags, char **dest, char *title)
 {   // wrapper to preserve old name used in back-end
     TagsPopDown();
     resPtr = dest; 
-    NewTagsPopup(tags, NULL, _("Registered Engines"));
+    NewTagsPopup(tags, NULL, title);
 }
 
 void
 
 void
 EditEngineProc ()
 {
-    EditEnginePopUp(firstChessProgramNames, &firstChessProgramNames);
+    EditAnyPopUp(firstChessProgramNames, &firstChessProgramNames, _("Registered Engines"));
+}
+
+void
+EditThemesProc ()
+{
+    EditAnyPopUp(appData.themeNames, &appData.themeNames, _("Predefined Themes"));
 }
 
 void
   {N_("ICS Input Box"),      NULL,           "ICSInputBox",     IcsInputBoxProc,        CHECK},
   {N_("ICS/Chat Console"),   NULL,           "OpenChatWindow",  ChatProc,               CHECK},
   {"----",                   NULL,            NULL,             NothingProc},
+  {N_("Edit Theme List..."), NULL,           "EditThemeList",   EditThemesProc},
   {N_("Board..."),           NULL,           "Board",           BoardOptionsProc},
   {N_("Fonts..."),           NULL,           "Fonts",           FontsProc},
   {N_("Game List Tags..."),  NULL,           "GameListTags",    GameListOptionsProc},
 
 char *ModeToWidgetName P((GameMode mode));
 void CreateAnimVars P((void));
 void CopySomething P((char *s));
-void EditEnginePopUp P((char *tags, char **dest));
+void EditAnyPopUp P((char *tags, char **dest, char *title));