put error message in red
authorLaurent Mazet <mazet@softndesign.org>
Sat, 18 Jan 2025 15:43:01 +0000 (16:43 +0100)
committerLaurent Mazet <mazet@softndesign.org>
Sat, 18 Jan 2025 15:43:01 +0000 (16:43 +0100)
display.c
display.h
fm.c

index 26e283743a3f761bd1ad22cde030e55d8503d8ac..f67b12e647dac0aa731c9f50b66eefda1a5fbf6b 100644 (file)
--- a/display.c
+++ b/display.c
@@ -140,7 +140,11 @@ int helpwindow (char *msg, int xoffset, int yoffset)
     int j = 2;
     j += _helpwindow (msg, xoffset, yoffset + j, length);
     _dobound (length, j, xoffset, yoffset);
-    set_color (black);
+    set_color (white);
+
+    while (getch () == ERR) {
+        usleep (200 * 1000);
+    }
 
     return j;
 }
@@ -420,7 +424,7 @@ char *getwindow (char *msg, window_t *win, int length, int size, char *init)
     return name;
 }
 
-void msgwindow (char *msg, window_t *win, int length)
+void _msgwindow (char *msg, window_t *win, int length)
 {
     int xsize = (length > 0) ? length : (int)strlen (msg);
     int xoffset = win->xoffset + (win->xsize - xsize) / 2;
@@ -429,17 +433,17 @@ void msgwindow (char *msg, window_t *win, int length)
     }
     int yoffset = win->yoffset + (win->ysize - 1) / 2;
 
-    set_color (wblue);
     _dobound (xsize, 1, xoffset, yoffset);
     mvaddstr (yoffset, xoffset, msg);
-    set_color (white);
 }
 
 int askwindow (char *msg, window_t *win, char *ok, char *ko)
 {
     size_t i;
 
-    msgwindow (msg, win, 0);
+    set_color (wblue);
+    _msgwindow (msg, win, 0);
+    set_color (white);
 
     int stop = 0;
     while (!stop) {
@@ -478,6 +482,16 @@ int askwindow (char *msg, window_t *win, char *ok, char *ko)
     return stop;
 }
 
+void errorwindow (char *msg, window_t *win)
+{
+    set_color (wred);
+    _msgwindow (msg, win, 0);
+    set_color (white);
+    while (getch () == ERR) {
+        usleep (200 * 1000);
+    }
+}
+
 char *filewindow (char *name, window_t *win)
 {
     static char *_help =
@@ -524,9 +538,6 @@ char *filewindow (char *name, window_t *win)
             break;
         case 'h':
             helpwindow (_help, (win->xsize - strmaxlen (_help, '\n')) / 2, 3 * win->yoffset);
-            while (getch () == ERR) {
-                usleep (200 * 1000);
-            }
             break;
         case 'i':
         case KEY_UP:
index e45887e4d2cb1858a2e83318ce8632938a99c978..fe438a082d37cd01c8375ce18b6ca335a6c37dad 100644 (file)
--- a/display.h
+++ b/display.h
@@ -13,10 +13,10 @@ void elementwindow (window_t *win, char *status, int *index);
 
 char *getwindow (char *msg, window_t *win, int length, int size, char *init);
 
-void msgwindow (char *msg, window_t *win, int length);
-
 int askwindow (char *msg, window_t *win, char *ok, char *ko);
 
+void errorwindow (char *msg, window_t *win);
+
 char *filewindow (char *name, window_t *win);
 
 #define KEY_DELETE 0x014a
diff --git a/fm.c b/fm.c
index 7b5805f54a439b23e53dd2c638fc50dcbd9eb7db..f740261baee06119f80913df6dccb291efc26d97 100644 (file)
--- a/fm.c
+++ b/fm.c
@@ -266,9 +266,6 @@ int main (int argc, char *argv[])
         case 'H':
         case 'h':
             helpwindow (help, (width - strmaxlen (help, '\n')) / 2, 3 * yoffset);
-            while (getch () == ERR) {
-                usleep (200 * 1000);
-            }
             break;
         case KEY_UP:
         case 'i':
@@ -316,8 +313,7 @@ int main (int argc, char *argv[])
                         char *dest = dirname[(panel + 1 ) % MAXPANELS];
                         char *msg = processcopy (dest, src);
                         if (msg) {
-                            msgwindow (msg, winscreen, 0);
-                            getch ();
+                            errorwindow (msg, winscreen);
                             free (msg);
                         }
                         free (src);
@@ -335,8 +331,7 @@ int main (int argc, char *argv[])
                         char *src = newfilename (dirname[panel], current->name);
                         char *msg = processdelete (src);
                         if (msg) {
-                            msgwindow (msg, winscreen, 0);
-                            getch ();
+                            errorwindow (msg, winscreen);
                             free (msg);
                         }
                         free (src);
@@ -354,9 +349,6 @@ int main (int argc, char *argv[])
                 break;
             case ALT_H: /* help */
                 helpwindow (help, (width - strmaxlen (help, '\n')) / 2, 3 * yoffset);
-                while (getch () == ERR) {
-                    usleep (200 * 1000);
-                }
                 break;
             case ALT_M: /* move */
                 for (i = 0; i < list[panel]->nb; i++) {
@@ -366,8 +358,7 @@ int main (int argc, char *argv[])
                         char *dest = newfilename (dirname[(panel + 1 ) % MAXPANELS], current->name);
                         char *msg = processmove (dest, src);
                         if (msg) {
-                            msgwindow (msg, winscreen, 0);
-                            getch ();
+                            errorwindow (msg, winscreen);
                             free (msg);
                         }
                         free (src);
@@ -385,8 +376,7 @@ int main (int argc, char *argv[])
                     char *dest = newfilename (dirname[panel], string);
                     char *msg = processmkdir (dest);
                     if (msg) {
-                        msgwindow (msg, winscreen, 0);
-                        getch ();
+                        errorwindow (msg, winscreen);
                         free (msg);
                     }
                     free (dest);
@@ -407,16 +397,14 @@ int main (int argc, char *argv[])
                 if (string) {
                     if (strchr (string, *SEPARATOR) != NULL) {
                         char *buf = strdupcat ("Can't rename file to '", string, "'", NULL);
-                        msgwindow (buf, winscreen, 0);
-                        getch ();
+                        errorwindow (buf, winscreen);
                         free (buf);
                     } else {
                         char *src = newfilename (dirname[panel], current->name);
                         char *dest = newfilename (dirname[panel], string);
                         char *msg = processmove (dest, src);
                         if (msg) {
-                            msgwindow (msg, winscreen, 0);
-                            getch ();
+                            errorwindow (msg, winscreen);
                             free (msg);
                         }
                         free (src);
@@ -444,8 +432,7 @@ int main (int argc, char *argv[])
                     char *src = newfilename (dirname[panel], current->name);
                     char *msg = filewindow (src, winscreen);
                     if (msg) {
-                        msgwindow (msg, winscreen, 0);
-                        getch ();
+                        errorwindow (msg, winscreen);
                         free (msg);
                     }
                     free (src);
@@ -459,8 +446,7 @@ int main (int argc, char *argv[])
                     int mode = strtol (string, &endptr, 8);
                     if ((*endptr != '\0') || (mode <= 0) || (mode > 0777)) {
                         char *buf = strdupcat ("Can't change file(s) to mode '", string, "'" , NULL);
-                        msgwindow (buf, winscreen, 0);
-                        getch ();
+                        errorwindow (buf, winscreen);
                         free (buf);
                     } else {
                         for (i = 0; i < list[panel]->nb; i++) {
@@ -469,8 +455,7 @@ int main (int argc, char *argv[])
                                 char *src = newfilename (dirname[panel], current->name);
                                 char *msg = processchmod (src, mode);
                                 if (msg) {
-                                    msgwindow (msg, winscreen, 0);
-                                    getch ();
+                                    errorwindow (msg, winscreen);
                                     free (msg);
                                 }
                                 free (src);