if (xoffset < 1) {
xoffset = 1;
}
+ int xsize = strlen (msg) + 1 + length;
int yoffset = win->yoffset + (win->ysize - 1) / 2;
set_color (black);
- _dobound (strlen (msg) + 1 + length, 1, xoffset, yoffset);
+ _dobound (xsize, 1, xoffset, yoffset);
mvaddstr (yoffset, xoffset, msg);
xoffset += strlen (msg);
mvaddch (yoffset, xoffset, ' ');
return name;
}
-void msgwindow (char *msg, int xoffset, int yoffset, 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;
+ if (xoffset < 1) {
+ xoffset = 1;
+ }
+ int yoffset = win->yoffset + (win->ysize - 1) / 2;
+
set_color (black);
- _dobound ((length > 0) ? length : (int)strlen (msg), 1, xoffset, yoffset);
- mvaddstr (yoffset, xoffset + ((length > 0) ? (length - (int)strlen (msg)) / 2 : 0), msg);
+ _dobound (xsize, 1, xoffset, yoffset);
+ mvaddstr (yoffset, xoffset, msg);
set_color (white);
}
-int askwindow (char *msg, int xoffset, int yoffset, char *ok, char *ko)
+int askwindow (char *msg, window_t *win, char *ok, char *ko)
{
size_t i;
- msgwindow (msg, xoffset, yoffset, 0);
+ msgwindow (msg, win, 0);
int stop = 0;
while (!stop) {
char *getwindow (char *msg, window_t *win, int length, int size);
-void msgwindow (char *msg, int xoffset, int yoffset, int length);
+void msgwindow (char *msg, window_t *win, int length);
-int askwindow (char *msg, int xoffset, int yoffset, char *ok, char *ko);
+int askwindow (char *msg, window_t *win, char *ok, char *ko);
#define KEY_DELETE 0x014a
#define KEY_ESC 0x1b
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/stat.h>
#include <unistd.h>
#include "debug.h"
int stop = 0;
while (!stop) {
elem_t *current = NULL;
- char *filter = NULL;
+ char *string = NULL;
menuwindow (winmenu, menu, &index_menu);
case ALT_E: /* edit */
break;
case ALT_F: /* filter */
- VERBOSE(DEBUG, fprintf (stderr, "ALT F\n"));
- filter = getwindow ("Set filter", windir[pane], 8, 32);
- if (filter) {
- filterlist (list[pane], filter);
- free (filter);
+ string = getwindow ("Set filter", windir[pane], 8, 32);
+ if (string) {
+ filterlist (list[pane], string);
+ free (string);
}
break;
case ALT_H: /* help */
case ALT_M: /* move */
break;
case ALT_N: /* new dir */
+ string = getwindow ("New directory", windir[pane], 8, 32);
+ if (string) {
+ if (mkdir (string, 0750) != 0) {
+ msgwindow ("Can't create directory", windir[pane], 0);
+ getch ();
+ }
+ freelist (list[pane]);
+ list[pane] = NULL;
+ free (string);
+ }
break;
case ALT_Q: /* quit */
- if (askwindow (" Restart (Y/N) ", max (windir[pane]->xoffset + (windir[pane]->xsize - 15) / 2, 1), windir[pane]->yoffset + (windir[pane]->ysize - 1) / 2, "Yy", "Nn") == 1) {
+ if (askwindow (" Restart (Y/N) ", windir[pane], "Yy", "Nn") == 1) {
stop = 1;
}
break;
/* test: { sleep 1; echo -n KKKKK; sleep 1; echo -n IIIII; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -d /dev -d . */
/* test: { sleep 1; echo -n kkkkkkkkkkkkkkkkkkkkkkkk; sleep 1; echo -n iiiiiiiiiiiiiiiiiiiii; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -d /dev -d . */
/* test: { sleep 1; echo -n kkkkkkkkk; sleep 1; echo -n ooo; sleep 1; echo -n uu; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 */
-/* test: { sleep 1; echo -en '\ef'; sleep 1; echo ' .*\.c'; sleep 1; echo -en 'kkk\esl'; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe */
+/* test: { sleep 1; echo -en '\ef'; sleep 1; echo -n ' .*\.c'; sleep 1; echo; sleep 1; echo -en 'kkk\esl'; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe */
/* test: { sleep 1; echo -en '\ef'; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe */
/* test: { sleep 1; echo -en '\ef'; sleep 1; echo -n 123456789012345678901234567890123; sleep 1; echo -en '\b\b'; sleep 1; echo -ne '\e'; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe */
-
+/* test: { sleep 1; echo -en '\en'; sleep 1; echo -n foobar; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rmdir foobar */
+/* test: { sleep 1; echo -en '\en'; sleep 1; echo -n foo/bar; sleep 1; echo; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe */
/* vim: set ts=4 sw=4 et: */