Provide menus for editing WinBoard engine and server lists
authorH.G. Muller <h.g.muller@hccnet.nl>
Fri, 3 Dec 2010 08:27:58 +0000 (09:27 +0100)
committerArun Persaud <arun@nubati.net>
Sat, 4 Dec 2010 04:02:48 +0000 (20:02 -0800)
The Edit Tags dialog in the WB front-end is adapted to act as a general
edit for string variables, by giving it an extra parameter to indicate
where to store the edited result. Menu items are added to invoke this
dialog for editing the /first, /secondChessProgramNames and /icsNames
options. This solves the problem that people would have to edit an ini
file that they can no longer locate (because the %APPDATA% folder has
different names and locations in the various Windows versions, and is
often a hidden folder on top of that).
There is a slight memory leak here, as the memory for the previous
value of the altered string option is not freed.

backend.c
frontend.h
winboard/resource.h
winboard/wedittags.c
winboard/winboard.c
winboard/winboard.rc
xedittags.c

index 847b609..410488b 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -11641,7 +11641,7 @@ void
 EditTagsEvent()
 {
     char *tags = PGNTags(&gameInfo);
-    EditTagsPopUp(tags);
+    EditTagsPopUp(tags, NULL);
     free(tags);
 }
 
index 8e57e58..0946e3b 100644 (file)
@@ -177,7 +177,7 @@ void GameListHighlight P((int index));
 void GameListDestroy P((void));
 
 /* these are in wedittags.c */
-void EditTagsPopUp P((char *tags));
+void EditTagsPopUp P((char *tags, char **dest));
 void TagsPopUp P((char *tags, char *msg));
 void TagsPopDown P((void));
 
index cee0fec..e063e42 100644 (file)
 #define IDM_ReloadCMailMsg              165\r
 #define IDM_Book                        166\r
 #define IDM_AboutGame                   167\r
+#define IDM_EditServers                 169\r
 #define IDM_ShowGameList                170\r
 #define IDM_EditTags                    171\r
 #define IDM_Tags                        172\r
 #define IDM_Comment                     173\r
 #define IDM_Debug                       174\r
+#define IDM_EditProgs1                  175\r
+#define IDM_EditProgs2                  176\r
 #define IDM_AnalysisMode                177\r
 #define IDM_AnalyzeFile                 178\r
 #define IDM_Annotate                    179\r
index 0cf3ca3..f6782bb 100644 (file)
@@ -42,7 +42,7 @@
 #define _(s) T_(s)\r
 \r
 /* Module globals */\r
-static char *editTagsText;\r
+static char *editTagsText, **resPtr;\r
 BOOL editTagsUp = FALSE;\r
 BOOL canEditTags = FALSE;\r
 \r
@@ -122,12 +122,13 @@ EditTagsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
        GetWindowText(hwndText, str, len + 1);\r
        p = q = str;\r
        while (*q) {\r
-         if (*q == '\r'|| *q == '\n')\r
+         if (*q == '\r')\r
            q++;\r
          else\r
            *p++ = *q++;\r
        }\r
        *p = NULLCHAR;\r
+        if(resPtr) *resPtr = strdup(str), err = 0; else\r
        err = ReplaceTags(str, &gameInfo);\r
        if (err) DisplayError(_("Error replacing tags."), err);\r
 \r
@@ -221,8 +222,9 @@ VOID TagsPopUp(char *tags, char *msg)
   SetActiveWindow(hwnd);\r
 }\r
 \r
-VOID EditTagsPopUp(char *tags)\r
+VOID EditTagsPopUp(char *tags, char **dest)\r
 {\r
+  resPtr = dest;\r
   EitherTagsPopUp(tags, "", TRUE);\r
 }\r
 \r
index 12bd085..24fa20e 100644 (file)
@@ -4921,6 +4921,18 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
       ShowGameListProc();\r
       break;\r
 \r
+    case IDM_EditProgs1:\r
+      EditTagsPopUp(firstChessProgramNames, &firstChessProgramNames);\r
+      break;\r
+\r
+    case IDM_EditProgs2:\r
+      EditTagsPopUp(secondChessProgramNames, &secondChessProgramNames);\r
+      break;\r
+\r
+    case IDM_EditServers:\r
+      EditTagsPopUp(icsNames, &icsNames);\r
+      break;\r
+\r
     case IDM_EditTags:\r
     case IDM_Tags:\r
       EditTagsProc();\r
index 235f622..ca8624f 100644 (file)
@@ -1204,6 +1204,8 @@ BEGIN
     END\r
     POPUP "E&ngine"\r
     BEGIN\r
+        MENUITEM "Install 1st...",              IDM_EditProgs1\r
+        MENUITEM "Install 2nd...",              IDM_EditProgs2\r
         MENUITEM SEPARATOR\r
         MENUITEM "Engine #&1 Settings...",       IDM_Engine1Options\r
         MENUITEM "Engine #&2 Settings...",       IDM_Engine2Options\r
@@ -1229,6 +1231,7 @@ BEGIN
         MENUITEM SEPARATOR\r
         MENUITEM "Soun&ds...",                  IDM_Sounds\r
         MENUITEM "&ICS...",                     IDM_IcsOptions, GRAYED\r
+        MENUITEM "Add ICS...",                  IDM_EditServers\r
         MENUITEM "Comm&unications...",          IDM_CommPort\r
         MENUITEM SEPARATOR\r
         MENUITEM "Save Settings &Now",          IDM_SaveSettings\r
index 331f401..e9484f4 100644 (file)
@@ -349,8 +349,9 @@ void TagsPopUp(tags, msg)
 }
 
 
-void EditTagsPopUp(tags)
+void EditTagsPopUp(tags, dest)
      char *tags;
+     char **dest;
 {
     Widget textw;
     Arg args[16];